Loading Catalog/C6_50sqdeg.py +4 −6 Original line number Original line Diff line number Diff line Loading @@ -70,8 +70,7 @@ def get_star_cat(ra_pointing, dec_pointing): class Catalog(CatalogBase): class Catalog(CatalogBase): def __init__(self, config, chip, pointing, chip_output, filt, **kwargs): def __init__(self, config, chip, pointing, chip_output, filt, **kwargs): super().__init__() super().__init__() self.cat_dir = os.path.join(config["data_dir"], config["catalog_options"]["input_path"]["cat_dir"]) self.cat_dir = config["catalog_options"]["input_path"]["cat_dir"] # self.seed_Av = config["catalog_options"]["seed_Av"] self.cosmo = FlatLambdaCDM(H0=67.66, Om0=0.3111) self.cosmo = FlatLambdaCDM(H0=67.66, Om0=0.3111) Loading @@ -92,20 +91,19 @@ class Catalog(CatalogBase): # Get the cloest star catalog file # Get the cloest star catalog file star_file_name = get_star_cat(ra_pointing=self.pointing.ra, dec_pointing=self.pointing.dec) 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_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_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() 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"]: 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"] galaxy_dir = config["catalog_options"]["input_path"]["galaxy_cat"] self.galaxy_path = os.path.join(self.cat_dir, galaxy_dir) 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._load_SED_lib_gals() self.agn_seds = {} self.agn_seds = {} if "AGN_SED" in config["catalog_options"]["SED_templates_path"] and not config["catalog_options"]["star_only"]: 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"]: if "rotateEll" in config["catalog_options"]: self.rotation = np.radians(float(config["catalog_options"]["rotateEll"])) self.rotation = np.radians(float(config["catalog_options"]["rotateEll"])) Loading ObservationSim/Config/Config.py +11 −7 Original line number Original line Diff line number Diff line Loading @@ -12,15 +12,19 @@ def config_dir(config, work_dir=None, data_dir=None): path_dict["work_dir"] = work_dir path_dict["work_dir"] = work_dir # Data directory # Data directory if data_dir == None: # if data_dir == None: # Assume all input datasets are in the work directory # # Assume all input datasets are in the work directory path_dict["data_dir"] =os.path.join(path_dict["work_dir"], "data/") # path_dict["data_dir"] =os.path.join(path_dict["work_dir"], "data/") else: # else: path_dict["data_dir"] = data_dir # path_dict["data_dir"] = data_dir # PSF data directory # PSF data directory # if config["psf_setting"]["psf_model"] == "Interp": # path_dict["psf_pho_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_pho_dir"]) # path_dict["psf_sls_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_sls_dir"]) if config["psf_setting"]["psf_model"] == "Interp": if config["psf_setting"]["psf_model"] == "Interp": path_dict["psf_pho_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_pho_dir"]) path_dict["psf_pho_dir"] = config["psf_setting"]["psf_pho_dir"] path_dict["psf_sls_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_sls_dir"]) path_dict["psf_sls_dir"] = config["psf_setting"]["psf_sls_dir"] return path_dict return path_dict Loading ObservationSim/Config/Pointing.py +34 −2 Original line number Original line Diff line number Diff line import numpy as np import os import galsim import shutil import yaml import yaml import galsim import numpy as np from astropy.time import Time from astropy.time import Time from ObservationSim.Config._util import get_obs_id import ObservationSim.Instrument._util as _util import ObservationSim.Instrument._util as _util class Pointing(object): class Pointing(object): Loading Loading @@ -103,3 +106,32 @@ class Pointing(object): self.pointing_type = self.obs_param["obs_type"] self.pointing_type = self.obs_param["obs_type"] else: else: self.timestamp = t self.timestamp = t def make_output_pointing_dir(self, overall_config, pointing_ID=0, copy_obs_config=False): run_dir = os.path.join(overall_config["work_dir"], overall_config["run_name"]) if not os.path.exists(run_dir): try: os.makedirs(run_dir, exist_ok=True) except OSError: pass # self.prefix = "MSC_" + str(pointing_ID).rjust(8, '0') self.output_prefix = get_obs_id( img_type=self.pointing_type, project_cycle=overall_config["project_cycle"], run_counter=overall_config["run_counter"], pointing_id=self.obs_id, pointing_type_code = self.pointing_type_code) self.output_dir = os.path.join(run_dir, self.output_prefix) if not os.path.exists(self.output_dir): try: os.makedirs(self.output_dir, exist_ok=True) except OSError: pass if copy_obs_config and self.obs_config_file: obs_config_output_path = os.path.join(self.output_dir, os.path.basename(self.obs_config_file)) if not os.path.exists(obs_config_output_path): try: shutil.copy(args.obs_config_file, self.output_dir) except OSError: pass ObservationSim/ObservationSim.py +4 −4 Original line number Original line Diff line number Diff line Loading @@ -12,7 +12,7 @@ from ObservationSim.Config import config_dir, ChipOutput from ObservationSim.Instrument import Telescope, Filter, FilterParam, FocalPlane, Chip from ObservationSim.Instrument import Telescope, Filter, FilterParam, FocalPlane, Chip from ObservationSim.Instrument.Chip import Effects from ObservationSim.Instrument.Chip import Effects from ObservationSim.Instrument.Chip import ChipUtils as chip_utils from ObservationSim.Instrument.Chip import ChipUtils as chip_utils from ObservationSim._util import makeSubDir_PointingList from ObservationSim._util import make_output_pointing_dir from ObservationSim.Astrometry.Astrometry_util import on_orbit_obs_position from ObservationSim.Astrometry.Astrometry_util import on_orbit_obs_position from ObservationSim.sim_steps import SimSteps, SIM_STEP_TYPES from ObservationSim.sim_steps import SimSteps, SIM_STEP_TYPES Loading Loading @@ -99,7 +99,6 @@ class Observation(object): sim_steps = SimSteps(overall_config=self.config, chip_output=chip_output, all_filters=self.all_filters) sim_steps = SimSteps(overall_config=self.config, chip_output=chip_output, all_filters=self.all_filters) for step in pointing.obs_param["call_sequence"]: for step in pointing.obs_param["call_sequence"]: print(step) if self.config["run_option"]["out_cat_only"]: if self.config["run_option"]["out_cat_only"]: if step != "scie_obs": if step != "scie_obs": continue continue Loading Loading @@ -268,6 +267,9 @@ class Observation(object): # Construct chips & filters: # Construct chips & filters: pointing = pointing_list[ipoint] pointing = pointing_list[ipoint] pointing_ID = pointing.id pointing_ID = pointing.id sub_img_dir, prefix = make_output_pointing_dir(path_dict=self.path_dict, config=self.config, pointing_ID=pointing_ID) self.focal_plane = FocalPlane(chip_list=pointing.obs_param["run_chips"]) self.focal_plane = FocalPlane(chip_list=pointing.obs_param["run_chips"]) # Make Chip & Filter lists # Make Chip & Filter lists self.chip_list = [] self.chip_list = [] Loading Loading @@ -310,8 +312,6 @@ class Observation(object): continue continue pid = os.getpid() pid = os.getpid() sub_img_dir, prefix = makeSubDir_PointingList(path_dict=self.path_dict, config=self.config, pointing_ID=pointing_ID) chip = run_chips[ichip] chip = run_chips[ichip] filt = run_filts[ichip] filt = run_filts[ichip] # chip_output.Log_info("running pointing#%d, chip#%d, at PID#%d..."%(pointing_ID, chip.chipID, pid)) # chip_output.Log_info("running pointing#%d, chip#%d, at PID#%d..."%(pointing_ID, chip.chipID, pid)) Loading ObservationSim/_util.py +7 −3 Original line number Original line Diff line number Diff line Loading @@ -37,8 +37,12 @@ def generate_pointing_list(config, pointing_filename=None, data_dir=None): else: else: obs_config_file = None obs_config_file = None if pointing_filename and data_dir: # if pointing_filename and data_dir: if pointing_filename: if data_dir: pointing_file = os.path.join(data_dir, pointing_filename) pointing_file = os.path.join(data_dir, pointing_filename) else: pointing_file = pointing_filename f = open(pointing_file, 'r') f = open(pointing_file, 'r') # for _ in range(1): # for _ in range(1): # header = f.readline() # header = f.readline() Loading Loading @@ -93,7 +97,7 @@ def make_run_dirs(work_dir, run_name, pointing_list): pass pass return imgDir return imgDir def makeSubDir_PointingList(path_dict, config, pointing_ID=0): def make_output_pointing_dir(path_dict, config, pointing_ID=0): imgDir = os.path.join(path_dict["work_dir"], config["run_name"]) imgDir = os.path.join(path_dict["work_dir"], config["run_name"]) if not os.path.exists(imgDir): if not os.path.exists(imgDir): try: try: Loading Loading
Catalog/C6_50sqdeg.py +4 −6 Original line number Original line Diff line number Diff line Loading @@ -70,8 +70,7 @@ def get_star_cat(ra_pointing, dec_pointing): class Catalog(CatalogBase): class Catalog(CatalogBase): def __init__(self, config, chip, pointing, chip_output, filt, **kwargs): def __init__(self, config, chip, pointing, chip_output, filt, **kwargs): super().__init__() super().__init__() self.cat_dir = os.path.join(config["data_dir"], config["catalog_options"]["input_path"]["cat_dir"]) self.cat_dir = config["catalog_options"]["input_path"]["cat_dir"] # self.seed_Av = config["catalog_options"]["seed_Av"] self.cosmo = FlatLambdaCDM(H0=67.66, Om0=0.3111) self.cosmo = FlatLambdaCDM(H0=67.66, Om0=0.3111) Loading @@ -92,20 +91,19 @@ class Catalog(CatalogBase): # Get the cloest star catalog file # Get the cloest star catalog file star_file_name = get_star_cat(ra_pointing=self.pointing.ra, dec_pointing=self.pointing.dec) 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_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_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() 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"]: 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"] galaxy_dir = config["catalog_options"]["input_path"]["galaxy_cat"] self.galaxy_path = os.path.join(self.cat_dir, galaxy_dir) 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._load_SED_lib_gals() self.agn_seds = {} self.agn_seds = {} if "AGN_SED" in config["catalog_options"]["SED_templates_path"] and not config["catalog_options"]["star_only"]: 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"]: if "rotateEll" in config["catalog_options"]: self.rotation = np.radians(float(config["catalog_options"]["rotateEll"])) self.rotation = np.radians(float(config["catalog_options"]["rotateEll"])) Loading
ObservationSim/Config/Config.py +11 −7 Original line number Original line Diff line number Diff line Loading @@ -12,15 +12,19 @@ def config_dir(config, work_dir=None, data_dir=None): path_dict["work_dir"] = work_dir path_dict["work_dir"] = work_dir # Data directory # Data directory if data_dir == None: # if data_dir == None: # Assume all input datasets are in the work directory # # Assume all input datasets are in the work directory path_dict["data_dir"] =os.path.join(path_dict["work_dir"], "data/") # path_dict["data_dir"] =os.path.join(path_dict["work_dir"], "data/") else: # else: path_dict["data_dir"] = data_dir # path_dict["data_dir"] = data_dir # PSF data directory # PSF data directory # if config["psf_setting"]["psf_model"] == "Interp": # path_dict["psf_pho_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_pho_dir"]) # path_dict["psf_sls_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_sls_dir"]) if config["psf_setting"]["psf_model"] == "Interp": if config["psf_setting"]["psf_model"] == "Interp": path_dict["psf_pho_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_pho_dir"]) path_dict["psf_pho_dir"] = config["psf_setting"]["psf_pho_dir"] path_dict["psf_sls_dir"] = os.path.join(path_dict["data_dir"], config["psf_setting"]["psf_sls_dir"]) path_dict["psf_sls_dir"] = config["psf_setting"]["psf_sls_dir"] return path_dict return path_dict Loading
ObservationSim/Config/Pointing.py +34 −2 Original line number Original line Diff line number Diff line import numpy as np import os import galsim import shutil import yaml import yaml import galsim import numpy as np from astropy.time import Time from astropy.time import Time from ObservationSim.Config._util import get_obs_id import ObservationSim.Instrument._util as _util import ObservationSim.Instrument._util as _util class Pointing(object): class Pointing(object): Loading Loading @@ -103,3 +106,32 @@ class Pointing(object): self.pointing_type = self.obs_param["obs_type"] self.pointing_type = self.obs_param["obs_type"] else: else: self.timestamp = t self.timestamp = t def make_output_pointing_dir(self, overall_config, pointing_ID=0, copy_obs_config=False): run_dir = os.path.join(overall_config["work_dir"], overall_config["run_name"]) if not os.path.exists(run_dir): try: os.makedirs(run_dir, exist_ok=True) except OSError: pass # self.prefix = "MSC_" + str(pointing_ID).rjust(8, '0') self.output_prefix = get_obs_id( img_type=self.pointing_type, project_cycle=overall_config["project_cycle"], run_counter=overall_config["run_counter"], pointing_id=self.obs_id, pointing_type_code = self.pointing_type_code) self.output_dir = os.path.join(run_dir, self.output_prefix) if not os.path.exists(self.output_dir): try: os.makedirs(self.output_dir, exist_ok=True) except OSError: pass if copy_obs_config and self.obs_config_file: obs_config_output_path = os.path.join(self.output_dir, os.path.basename(self.obs_config_file)) if not os.path.exists(obs_config_output_path): try: shutil.copy(args.obs_config_file, self.output_dir) except OSError: pass
ObservationSim/ObservationSim.py +4 −4 Original line number Original line Diff line number Diff line Loading @@ -12,7 +12,7 @@ from ObservationSim.Config import config_dir, ChipOutput from ObservationSim.Instrument import Telescope, Filter, FilterParam, FocalPlane, Chip from ObservationSim.Instrument import Telescope, Filter, FilterParam, FocalPlane, Chip from ObservationSim.Instrument.Chip import Effects from ObservationSim.Instrument.Chip import Effects from ObservationSim.Instrument.Chip import ChipUtils as chip_utils from ObservationSim.Instrument.Chip import ChipUtils as chip_utils from ObservationSim._util import makeSubDir_PointingList from ObservationSim._util import make_output_pointing_dir from ObservationSim.Astrometry.Astrometry_util import on_orbit_obs_position from ObservationSim.Astrometry.Astrometry_util import on_orbit_obs_position from ObservationSim.sim_steps import SimSteps, SIM_STEP_TYPES from ObservationSim.sim_steps import SimSteps, SIM_STEP_TYPES Loading Loading @@ -99,7 +99,6 @@ class Observation(object): sim_steps = SimSteps(overall_config=self.config, chip_output=chip_output, all_filters=self.all_filters) sim_steps = SimSteps(overall_config=self.config, chip_output=chip_output, all_filters=self.all_filters) for step in pointing.obs_param["call_sequence"]: for step in pointing.obs_param["call_sequence"]: print(step) if self.config["run_option"]["out_cat_only"]: if self.config["run_option"]["out_cat_only"]: if step != "scie_obs": if step != "scie_obs": continue continue Loading Loading @@ -268,6 +267,9 @@ class Observation(object): # Construct chips & filters: # Construct chips & filters: pointing = pointing_list[ipoint] pointing = pointing_list[ipoint] pointing_ID = pointing.id pointing_ID = pointing.id sub_img_dir, prefix = make_output_pointing_dir(path_dict=self.path_dict, config=self.config, pointing_ID=pointing_ID) self.focal_plane = FocalPlane(chip_list=pointing.obs_param["run_chips"]) self.focal_plane = FocalPlane(chip_list=pointing.obs_param["run_chips"]) # Make Chip & Filter lists # Make Chip & Filter lists self.chip_list = [] self.chip_list = [] Loading Loading @@ -310,8 +312,6 @@ class Observation(object): continue continue pid = os.getpid() pid = os.getpid() sub_img_dir, prefix = makeSubDir_PointingList(path_dict=self.path_dict, config=self.config, pointing_ID=pointing_ID) chip = run_chips[ichip] chip = run_chips[ichip] filt = run_filts[ichip] filt = run_filts[ichip] # chip_output.Log_info("running pointing#%d, chip#%d, at PID#%d..."%(pointing_ID, chip.chipID, pid)) # chip_output.Log_info("running pointing#%d, chip#%d, at PID#%d..."%(pointing_ID, chip.chipID, pid)) Loading
ObservationSim/_util.py +7 −3 Original line number Original line Diff line number Diff line Loading @@ -37,8 +37,12 @@ def generate_pointing_list(config, pointing_filename=None, data_dir=None): else: else: obs_config_file = None obs_config_file = None if pointing_filename and data_dir: # if pointing_filename and data_dir: if pointing_filename: if data_dir: pointing_file = os.path.join(data_dir, pointing_filename) pointing_file = os.path.join(data_dir, pointing_filename) else: pointing_file = pointing_filename f = open(pointing_file, 'r') f = open(pointing_file, 'r') # for _ in range(1): # for _ in range(1): # header = f.readline() # header = f.readline() Loading Loading @@ -93,7 +97,7 @@ def make_run_dirs(work_dir, run_name, pointing_list): pass pass return imgDir return imgDir def makeSubDir_PointingList(path_dict, config, pointing_ID=0): def make_output_pointing_dir(path_dict, config, pointing_ID=0): imgDir = os.path.join(path_dict["work_dir"], config["run_name"]) imgDir = os.path.join(path_dict["work_dir"], config["run_name"]) if not os.path.exists(imgDir): if not os.path.exists(imgDir): try: try: Loading