Source code for pyvisgen.utils.config
from pathlib import Path
import toml
[docs]
def read_data_set_conf(conf_toml: str | Path) -> dict:
"""Read toml data set configuration file and convert
it into a dictionary.
Parameters
----------
conf_toml : str or Path
Path to config file.
Returns
-------
conf : dict
Simulation configuration.
"""
config = toml.load(conf_toml)
config = sanitize_conf(config)
conf = {}
conf["mode"] = config["sampling_options"]["mode"]
conf["device"] = config["sampling_options"]["device"]
conf["seed"] = config["sampling_options"]["seed"]
conf["layout"] = (config["sampling_options"]["layout"],)
conf["img_size"] = (config["sampling_options"]["img_size"],)
conf["fov_center_ra"] = (config["sampling_options"]["fov_center_ra"],)
conf["fov_center_dec"] = (config["sampling_options"]["fov_center_dec"],)
conf["fov_size"] = config["sampling_options"]["fov_size"]
conf["corr_int_time"] = config["sampling_options"]["corr_int_time"]
conf["scan_start"] = config["sampling_options"]["scan_start"]
conf["scan_duration"] = config["sampling_options"]["scan_duration"]
conf["num_scans"] = config["sampling_options"]["num_scans"]
conf["scan_separation"] = config["sampling_options"]["scan_separation"]
conf["ref_frequency"] = config["sampling_options"]["ref_frequency"]
conf["frequency_offsets"] = config["sampling_options"]["frequency_offsets"]
conf["bandwidths"] = config["sampling_options"]["bandwidths"]
conf["corrupted"] = config["sampling_options"]["corrupted"]
conf["noisy"] = config["sampling_options"]["noisy"]
conf["sensitivty_cut"] = config["sampling_options"]["sensitivity_cut"]
conf["polarization"] = config["polarization_options"]["mode"]
conf["pol_delta"] = config["polarization_options"]["delta"]
conf["pol_amp_ratio"] = config["polarization_options"]["amp_ratio"]
conf["field_order"] = config["polarization_options"]["field_order"]
conf["field_scale"] = config["polarization_options"]["field_scale"]
conf["field_threshold"] = config["polarization_options"]["field_threshold"]
conf["num_test_images"] = config["bundle_options"]["num_test_images"]
conf["bundle_size"] = config["bundle_options"]["bundle_size"]
conf["train_valid_split"] = config["bundle_options"]["train_valid_split"]
conf["grid_size"] = config["bundle_options"]["grid_size"]
conf["grid_fov"] = config["bundle_options"]["grid_fov"]
conf["amp_phase"] = config["bundle_options"]["amp_phase"]
conf["in_path"] = config["bundle_options"]["in_path"]
conf["out_path_fits"] = config["bundle_options"]["out_path_fits"]
conf["out_path_gridded"] = config["bundle_options"]["out_path_gridded"]
conf["file_prefix"] = config["bundle_options"]["file_prefix"]
# handle case if file_prefix = None
if not conf["file_prefix"]:
conf["file_prefix"] = ""
return conf
[docs]
def sanitize_conf(conf: dict) -> dict:
"""Sanitizes a given dict by replacinginstances of
'none' str with None.
Parameters
----------
conf : list
Unsanitized config dict.
Returns
-------
sanitized_conf : list
Sanitized conf dict where all instances of 'none'
are replaced with None.
"""
sanitized_conf = {}
for key, val in conf.items():
if isinstance(val, dict):
val = sanitize_conf(val)
elif isinstance(val, str) and val == "none":
val = None
sanitized_conf[key] = val
return sanitized_conf