Example #1
0
    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
Example #7
0
    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