Commit 8df06b27 authored by Fang Yuedong's avatar Fang Yuedong
Browse files

Merge branch 'sim_scheduler' into develop

parents 81e2570f 93270bbf
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+8 −0
Original line number Diff line number Diff line
build/*
CSSTSim.egg-info/*
dist/*
*.pyc
*.so
*disperse.c
*interp.c
!*libshao.so
 No newline at end of file
+30 −24
Original line number Diff line number Diff line
import os
import galsim
import random
import copy
import numpy as np
import h5py as h5
import healpy as hp
@@ -69,8 +70,7 @@ def get_star_cat(ra_pointing, dec_pointing):
class Catalog(CatalogBase):
    def __init__(self, config, chip, pointing, chip_output, filt, **kwargs):
        super().__init__()
        self.cat_dir = os.path.join(config["data_dir"], config["catalog_options"]["input_path"]["cat_dir"])
        self.seed_Av = config["catalog_options"]["seed_Av"]
        self.cat_dir = config["catalog_options"]["input_path"]["cat_dir"]

        self.cosmo = FlatLambdaCDM(H0=67.66, Om0=0.3111)

@@ -91,20 +91,19 @@ class Catalog(CatalogBase):
            # Get the cloest star catalog file
            star_file_name = get_star_cat(ra_pointing=self.pointing.ra, dec_pointing=self.pointing.dec)
            star_path = os.path.join(config["catalog_options"]["input_path"]["star_cat"], star_file_name)
            star_SED_file = config["catalog_options"]["SED_templates_path"]["star_SED"]
            self.star_path = os.path.join(self.cat_dir, star_path)
            self.star_SED_path = os.path.join(config["data_dir"], star_SED_file)
            self.star_SED_path = config["catalog_options"]["SED_templates_path"]["star_SED"]
            self._load_SED_lib_star()
        
        if "galaxy_cat" in config["catalog_options"]["input_path"] and config["catalog_options"]["input_path"]["galaxy_cat"] and not config["catalog_options"]["star_only"]:
            galaxy_dir = config["catalog_options"]["input_path"]["galaxy_cat"]
            self.galaxy_path = os.path.join(self.cat_dir, galaxy_dir)
            self.galaxy_SED_path = os.path.join(config["data_dir"], config["catalog_options"]["SED_templates_path"]["galaxy_SED"])
            self.galaxy_SED_path = config["catalog_options"]["SED_templates_path"]["galaxy_SED"]
            self._load_SED_lib_gals()
            self.agn_seds = {}

        if "AGN_SED" in config["catalog_options"]["SED_templates_path"] and not config["catalog_options"]["star_only"]:
            self.AGN_SED_path = os.path.join(config["data_dir"], config["catalog_options"]["SED_templates_path"]["AGN_SED"])
            self.AGN_SED_path = config["catalog_options"]["SED_templates_path"]["AGN_SED"]

        if "rotateEll" in config["catalog_options"]:
            self.rotation = np.radians(float(config["catalog_options"]["rotateEll"]))
@@ -123,7 +122,7 @@ class Catalog(CatalogBase):

        self.add_fmt = " %10s %8.4f %8.4f %8.4f"
        self.add_fmt += " %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %4d %8.4f "
        self.chip_output.update_ouptut_header(additional_column_names=self.add_hdr)
        self.chip_output.update_output_header(additional_column_names=self.add_hdr)

    def _get_healpix_list(self):
        self.sky_coverage = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.2)
@@ -204,6 +203,10 @@ class Catalog(CatalogBase):
            param['dec'] = dec_arr[igals]
            param['ra_orig'] = gals['ra'][igals]
            param['dec_orig'] = gals['dec'][igals]

            if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200):
                continue
            
            # param['mag_use_normal'] = gals['mag_csst_%s'%(self.filt.filter_type)][igals]
            if self.filt.filter_type == 'NUV':
                param['mag_use_normal'] = gals['mag_csst_nuv'][igals]
@@ -275,29 +278,32 @@ class Catalog(CatalogBase):
            param['av'] = 0.0
            param['redden'] = 0

            # TEMP
            self.ids += 1
            param['id'] = '%06d'%(int(pix_id)) + '%06d'%(cat_id) + '%08d'%(igals)

            # Is this an Quasar?
            param['qsoindex'] = gals['qsoindex'][igals]
            if param['qsoindex'] == -1:
                param['star'] = 0   # Galaxy
                param['agnsed_file'] = ""
                obj = Galaxy(param, logger=self.logger)
            else:
                param['star'] = 2   # Quasar
                param['agnsed_file'] = agnsed_file

            # NOTE: this cut cannot be put before the SED type has been assigned
            if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200):
                continue

            # TEMP
            self.ids += 1
            param['id'] = '%06d'%(int(pix_id)) + '%06d'%(cat_id) + '%08d'%(igals)
            
            if param['star'] == 0:
                param_qso = copy.deepcopy(param)
                param_qso['star'] = 2   # Quasar
                param_qso['agnsed_file'] = agnsed_file
                # First add QSO model
                obj = Quasar(param_qso, logger=self.logger)
                # Need to deal with additional output columns
                obj.additional_output_str = self.add_fmt%("n", 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
                                                        0, 0.)
                self.objs.append(obj)
                # Then add host galaxy model
                param['star'] = 0   # Galaxy
                param['agnsed_file'] = ""
                obj = Galaxy(param, logger=self.logger)
            elif param['star'] == 2:
                obj = Quasar(param, logger=self.logger)
            
            # Need to deal with additional output columns
            # Need to deal with additional output columns for (host) galaxy
            obj.additional_output_str = self.add_fmt%("n", 0., 0., 0.,
                                                    param['bulgemass'], param['diskmass'], param['detA'],
                                                    param['e1'], param['e2'], param['kappa'], param['g1'], param['g2'], param['size'],
@@ -343,7 +349,7 @@ class Catalog(CatalogBase):
                input_time_str=time_str
            )
        for istars in range(nstars):
            # # (TEST)
            # (TEST)
            # if istars > 100:
            #     break

@@ -446,7 +452,7 @@ class Catalog(CatalogBase):
            elif obj.type == 'quasar':
                flux = self.agn_seds[obj.agnsed_file][int(obj.qsoindex)] * 1e-17
                flux[flux < 0] = 0.
                wave = self.lamb_gal
                wave = self.lamb_gal * (1.0 + obj.z)
        else:
            raise ValueError("Object type not known")
        speci = interpolate.interp1d(wave, flux)
+526 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -99,7 +99,7 @@ class Catalog(CatalogBase):

        self.add_fmt = " %10s %8.4f %8.4f %8.4f"
        self.add_fmt += " %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %4d %8.4f "
        self.chip_output.update_ouptut_header(additional_column_names=self.add_hdr)
        self.chip_output.update_output_header(additional_column_names=self.add_hdr)

    def _get_healpix_list(self):
        self.sky_coverage = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.2)
+18 −10
Original line number Diff line number Diff line
@@ -60,6 +60,9 @@ class Catalog(CatalogBase):

        with pkg_resources.path('Catalog.data', 'SLOAN_SDSS.g.fits') as filter_path:
            self.normF_star = Table.read(str(filter_path))
        with pkg_resources.path('Catalog.data', 'lsst_throuput_g.fits') as filter_path:
            self.normF_galaxy = Table.read(str(filter_path))

        
        self.config = config
        self.chip = chip
@@ -110,7 +113,7 @@ class Catalog(CatalogBase):

        self.add_fmt = " %10s %8.4f %8.4f %8.4f"
        self.add_fmt += " %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %4d %8.4f "
        self.chip_output.update_ouptut_header(additional_column_names=self.add_hdr)
        self.chip_output.update_output_header(additional_column_names=self.add_hdr)

    def _get_healpix_list(self):
        self.sky_coverage = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.2)
@@ -138,8 +141,8 @@ class Catalog(CatalogBase):
            return None
        ###mock_stamp_START
        elif obj.type == "stamp":
            #return self.normF_galaxy  ###normalize_filter for stamp
            return None
            return self.normF_galaxy  ###normalize_filter for stamp
            #return None
        ###mock_stamp_END
        else:
            return None
@@ -197,8 +200,8 @@ class Catalog(CatalogBase):

        for igals in range(ngals):
            # # (TEST)
            # if igals > 100:
            #     break
            if igals > 2000:
                break
            
            param = self.initialize_param()
            param['ra'] = ra_arr[igals]
@@ -321,8 +324,8 @@ class Catalog(CatalogBase):
            )
        for istars in range(nstars):
            # # (TEST)
            # if istars > 100:
            #     break
            if istars > 100:
                break

            param = self.initialize_param()
            param['ra'] = ra_arr[istars]
@@ -389,6 +392,9 @@ class Catalog(CatalogBase):
                input_time_str=time_str
            )
        for iAGNs in range(nAGNs):
            if iAGNs > 100:
                break

            param = self.initialize_param()
            param['ra'] = ra_arr[iAGNs]
            param['dec'] = dec_arr[iAGNs]
@@ -425,13 +431,15 @@ class Catalog(CatalogBase):
        self.ud = galsim.UniformDeviate(pix_id)

        for istamp in range(nstamps):
            print('DEBUG:::istamp=', istamp)

            fitsfile = os.path.join(self.cat_dir, "stampCats/"+stamps['filename'][istamp].decode('utf-8'))
            hdu=fitsio.open(fitsfile)

            param = self.initialize_param()
            param['id']   = hdu[0].header['index'] #istamp
            param['star'] = 3      # Stamp type in .cat file
            param['lensGalaxyID'] = hdu[0].header['lensGID']
            ###param['lensGalaxyID'] = hdu[0].header['lensGID']
            param['ra'] = hdu[0].header['ra']
            param['dec']= hdu[0].header['dec']
            param['pixScale']= hdu[0].header['pixScale']
@@ -440,9 +448,9 @@ class Catalog(CatalogBase):
            #param['PA']= hdu[0].header['PA']
            #param['bfrac']= hdu[0].header['bfrac']
            #param['z']= hdu[0].header['z']
            param['mag_use_normal'] = 22 #hdu[0].header['m_normal'] #gals['mag_true_g_lsst']
            param['mag_use_normal'] = 20 #hdu[0].header['m_normal'] #gals['mag_true_g_lsst']

            assert(stamps['lensGID'][istamp] == param['lensGalaxyID'])
            ###assert(stamps['lensGID'][istamp] == param['lensGalaxyID'])

            # Apply astrometric modeling
            # in C3 case only aberration
Loading