def __init__(self): """Initialize the class. """ sci_props = ScienceProposals() survey = Survey() sci_props.load_proposals({ "GEN": survey.general_proposals, "SEQ": survey.sequence_proposals }) self.general_params = {} self.general_modules = {} for general_obj in sci_props.general_props.active: general_module = load_class(general_obj).__module__ general_model = GeneralPropModel(general_obj) params = general_model.make_parameter_dictionary() prop_name = params["name"]["value"] self.general_params[prop_name] = params self.general_modules[prop_name] = general_module self.sequence_params = {} self.sequence_modules = {} for sequence_obj in sci_props.sequence_props.active: sequence_module = load_class(sequence_obj).__module__ sequence_model = SequencePropModel(sequence_obj) params = sequence_model.make_parameter_dictionary() prop_name = params["name"]["value"] self.sequence_params[prop_name] = params self.sequence_modules[prop_name] = sequence_module
def make_parameter_dictionary(self): """Parameter dictionary for area distribution proposals. """ iparams = ModelHelper.make_parameter_dictionary(self) for key in iparams: if iparams[key]["dtype"] is None: iparams[key]["dtype"] = "GroupBox" sub_obj = getattr(self.config_obj, key) sub_cls = load_class(sub_obj) try: sparams = ModelHelper.make_parameter_dictionary(self, fields=sub_cls._fields, obj=sub_obj) iparams[key]["value"] = sparams except AttributeError: iparams[key]["value"] = {} for i, (k1, v1) in enumerate(sub_obj.items()): sub_cls1 = load_class(v1) sparams1 = ModelHelper.make_parameter_dictionary(self, fields=sub_cls1._fields, obj=v1) iparams[key]["value"][k1] = sparams1 iparams1 = iparams[key]["value"] for k2 in iparams1: if isinstance(iparams1[k2], collections.defaultdict): continue if iparams1[k2]["dtype"] is None: iparams1[k2]["dtype"] = "GroupBox" sub_obj2 = getattr(sub_obj, k2) try: sub_cls2 = load_class(sub_obj2) except ValueError: continue try: sparams1 = ModelHelper.make_parameter_dictionary(self, fields=sub_cls2._fields, obj=sub_obj2) iparams1[k2]["value"] = sparams1 except AttributeError: iparams1[k2]["value"] = {} for j, (k3, v3) in enumerate(sub_obj2.items()): sub_cls3 = load_class(v3) sparams2 = ModelHelper.make_parameter_dictionary(self, fields=sub_cls3._fields, obj=v3) iparams1[k2]["value"][j] = sparams2 iparams[key]["value"] = iparams1 final_params = collections.OrderedDict() for parameter_name in self.parameter_order: final_params[parameter_name] = iparams.get(parameter_name) return final_params
def make_parameter_dictionary(self): """Parameter dictionary for area distribution proposals. """ iparams = ModelHelper.make_parameter_dictionary(self) for key in iparams: if iparams[key]["dtype"] is None: iparams[key]["dtype"] = "GroupBox" sub_obj = getattr(self.config_obj, key) sub_cls = load_class(sub_obj) try: sparams = ModelHelper.make_parameter_dictionary(self, fields=sub_cls._fields, obj=sub_obj) iparams[key]["value"] = sparams except AttributeError: iparams[key]["value"] = {} for i, (k1, v1) in enumerate(sub_obj.items()): sub_cls1 = load_class(v1) sparams1 = ModelHelper.make_parameter_dictionary(self, fields=sub_cls1._fields, obj=v1) iparams[key]["value"][i] = sparams1 iparams1 = iparams[key]["value"] for k2 in iparams1: if isinstance(iparams1[k2], collections.defaultdict): continue if iparams1[k2]["dtype"] is None: iparams1[k2]["dtype"] = "GroupBox" sub_obj2 = getattr(sub_obj, k2) try: sub_cls2 = load_class(sub_obj2) except ValueError: continue try: sparams1 = ModelHelper.make_parameter_dictionary(self, fields=sub_cls2._fields, obj=sub_obj2) iparams1[k2]["value"] = sparams1 except AttributeError: iparams1[k2]["value"] = {} for j, (k3, v3) in enumerate(sub_obj2.items()): sub_cls3 = load_class(v3) sparams2 = ModelHelper.make_parameter_dictionary(self, fields=sub_cls3._fields, obj=v3) iparams1[k2]["value"][j] = sparams2 iparams[key]["value"] = iparams1 final_params = collections.OrderedDict() for parameter_name in self.parameter_order: final_params[parameter_name] = iparams.get(parameter_name) return final_params
def __init__(self, config_obj=None): """Initialize the class. Parameters ---------- config_obj : instance, optional An instance of a configuration object. """ self.config_obj = config_obj self.config_cls = load_class(self.config_obj) if config_obj is not None else None self.paren_match = re.compile(r'\(([^\)]+)\)') self.params = self.make_parameter_dictionary() if config_obj is not None else None
def __init__(self, config_obj=None): """Initialize the class. Parameters ---------- config_obj : instance, optional An instance of a configuration object. """ self.config_obj = config_obj self.config_cls = load_class( self.config_obj) if config_obj is not None else None self.paren_match = re.compile(r'\(([^\)]+)\)') self.params = self.make_parameter_dictionary( ) if config_obj is not None else None
def __init__(self): """Initialize the class. """ sci_props = ScienceProposals() survey = Survey() sci_props.load_proposals({"GEN": survey.general_proposals}) self.general_params = {} self.general_modules = {} general_objs = sci_props.general_props.active for general_obj in general_objs: general_module = load_class(general_obj).__module__ general_model = GeneralPropModel(general_obj) params = general_model.make_parameter_dictionary() prop_name = params["name"]["value"] self.general_params[prop_name] = params self.general_modules[prop_name] = general_module
def apply_overrides(self, config_files, extra_props=None): """Apply configuration overrides. Parameters ---------- config_files : list The list of configuration file paths. extra_props : str, optional A path for extra proposals. """ original_props = self.get_proposal_names() sci_props = ScienceProposals() survey = Survey() sci_props.load_proposals( { "GEN": survey.general_proposals, "SEQ": survey.sequence_proposals }, alternate_proposals=extra_props) general_params = {} new_general = {} for general_obj in sci_props.general_props.active: if general_obj.name not in original_props: name = general_obj.name self.general_modules[name] = load_class(general_obj).__module__ model = GeneralPropModel(general_obj) params = model.make_parameter_dictionary() self.general_params[name] = params new_general[name] = params ModelHelper.load_config(general_obj, config_files) general_model = GeneralPropModel(general_obj) params = general_model.make_parameter_dictionary() prop_name = params["name"]["value"] general_params[prop_name] = params sequence_params = {} new_sequence = {} for sequence_obj in sci_props.sequence_props.active: if sequence_obj.name not in original_props: name = sequence_obj.name self.sequence_modules[name] = load_class( sequence_obj).__module__ model = SequencePropModel(sequence_obj) params = model.make_parameter_dictionary() self.sequence_params[name] = params new_sequence[name] = params ModelHelper.load_config(sequence_obj, config_files) sequence_model = SequencePropModel(sequence_obj) params = sequence_model.make_parameter_dictionary() prop_name = params["name"]["value"] sequence_params[prop_name] = params new_params = collections.namedtuple( "new_params", "general_params sequence_params " "new_general new_sequence") new_params.general_params = general_params new_params.sequence_params = sequence_params new_params.new_general = new_general new_params.new_sequence = new_sequence return new_params
def make_parameter_dictionary(self): """Parameter dictionary for sequence proposals. """ iparams = ModelHelper.make_parameter_dictionary(self) for key in iparams: if iparams[key]["dtype"] is None: iparams[key]["dtype"] = "GroupBox" sub_obj = getattr(self.config_obj, key) sub_cls = load_class(sub_obj) try: sparams = ModelHelper.make_parameter_dictionary( self, fields=sub_cls._fields, obj=sub_obj) iparams[key]["value"] = sparams except AttributeError: iparams[key]["value"] = {} for i, (k1, v1) in enumerate(sub_obj.items()): sub_cls1 = load_class(v1) sparams1 = ModelHelper.make_parameter_dictionary( self, fields=sub_cls1._fields, obj=v1) iparams[key]["value"][k1] = sparams1 if "master" in key: iparams[key]["value"][k1]["sub_sequences"][ "value"] = {} # Need to handle sub-sequence lists sub_seq_names = [] for k3, v3 in v1.sub_sequences.items(): sub_cls3 = load_class(v3) sparams3 = ModelHelper.make_parameter_dictionary( self, fields=sub_cls3._fields, obj=v3) iparams[key]["value"][k1]["sub_sequences"][ "value"][k3] = sparams3 sub_seq_names.append(sparams3["name"]["value"]) iparams[key]["value"][k1]["sub_sequence_names"] = \ {"units": None, "dtype": "StringList", "format": None, "doc": iparams[key]["value"][0]["sub_sequences"]["doc"], "value": ','.join(sub_seq_names)} iparams1 = iparams[key]["value"] for k2 in iparams1: if isinstance(iparams1[k2], collections.defaultdict): continue if iparams1[k2]["dtype"] is None: iparams1[k2]["dtype"] = "GroupBox" sub_obj2 = getattr(sub_obj, k2) try: sub_cls2 = load_class(sub_obj2) except ValueError: continue try: sparams1 = ModelHelper.make_parameter_dictionary( self, fields=sub_cls2._fields, obj=sub_obj2) iparams1[k2]["value"] = sparams1 except AttributeError: iparams1[k2]["value"] = {} for j, (k3, v3) in enumerate(sub_obj2.items()): sub_cls3 = load_class(v3) sparams2 = ModelHelper.make_parameter_dictionary( self, fields=sub_cls3._fields, obj=v3) iparams1[k2]["value"][j] = sparams2 iparams[key]["value"] = iparams1 final_params = collections.OrderedDict() for parameter_name in self.parameter_order: final_params[parameter_name] = iparams.get(parameter_name) return final_params