import galsim import os from astropy.time import Time as asTime def config_dir(config, work_dir=None, data_dir=None): path_dict = {} # Working directory if work_dir == None: dirname, _ = os.path.split(os.path.abspath(__file__)) path_dict["work_dir"] = "/".join(dirname.split("/")[:-1]) + "/" else: path_dict["work_dir"] = work_dir # Data directory # if data_dir == None: # # Assume all input datasets are in the work directory # path_dict["data_dir"] =os.path.join(path_dict["work_dir"], "data/") # else: # path_dict["data_dir"] = data_dir # 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": path_dict["psf_pho_dir"] = config["psf_setting"]["psf_pho_dir"] path_dict["psf_sls_dir"] = config["psf_setting"]["psf_sls_dir"] return path_dict def read_config(config_filename): """Read in a configuration file and return the corresponding dict(s). Parameters: config_filename: The name of the configuration file to read. Returns: (list) of config dicts """ config = {} config_file = open(config_filename).readlines() nlines = len(config_file) for i in range(nlines): row = config_file[i].split() if len(row) <= 1: continue # blank row if not "#" in row: if len(row) == 2: key, val = row[0:2] config.update({key:val}) else: print("!! Something is wrong with parameter '%s'."%row[0]) return elif row.index("#") == 2: key, val = row[0:2] config.update({key:val}) elif row.index("#") == 0: continue # annotation else: print("!! Something is wrong with parameter '%s'."%row[0]) return config = parse_config(config) return config def parse_config(config): """Parse the config values to the right type Parameters: config: raw config dict Returns: Parsed config dict """ config["ra_center"] = float(config["ra_center"]) config["dec_center"] = float(config["dec_center"]) config["psf_rcont"] = config["psf_rcont"].split(",") config["psfRa"] = float(config["psf_rcont"][0]) config["psfCont"] = float(config["psf_rcont"][1]) config["image_rot"] = float(config["image_rot"])*galsim.degrees config["sigma_spin"] = float(config["sigma_spin"]) config["reduced_g1"] = float(config["reduced_g1"]) config["reduced_g2"] = float(config["reduced_g2"]) config["rotateEll"] = float(config["rotateEll"]) config["reEll"] = int(config["rotateEll"]/45.0) if config["reEll"]==0: config["reIndex"] = "P" if config["reEll"]==1: config["reIndex"] = "X" if config["reEll"]==2: config["reIndex"] = "N" if config["reEll"]==3: config["reIndex"] = "Y" config["seed_flat"] = int(config["seed_flat"]) config["seed_prnu"] = int(config["seed_prnu"]) config["seed_star"] = int(config["seed_star"]) config["seed_gal"] = int(config["seed_gal"]) config["seed_Av"] = int(config["seed_Av"]) config["bias_level"] = int(config["bias_level"]) config["df_strength"] = float(config["df_strength"]) return config