diff --git a/validphys2/src/validphys/config.py b/validphys2/src/validphys/config.py index 0faab45183..282d9ceb65 100644 --- a/validphys2/src/validphys/config.py +++ b/validphys2/src/validphys/config.py @@ -381,8 +381,6 @@ def produce_cuts(self, *, commondata, use_cuts, rules, fit=None, theoryid=None): except LoadFailedError as e: raise ConfigError(e) from e elif use_cuts is CutsPolicy.INTERNAL: - if not theoryid: - raise ConfigError("theoryid must be specified for internal cuts") return self.loader.check_internal_cuts(commondata, rules) elif use_cuts is CutsPolicy.FROM_CUT_INTERSECTION_NAMESPACE: cut_list = [] @@ -1046,9 +1044,9 @@ def parse_default_filter_rules_recorded_spec_(self, spec): def produce_rules( self, - theoryid, use_cuts, defaults, + theoryid=None, default_filter_rules=None, filter_rules=None, default_filter_rules_recorded_spec_=None, @@ -1061,17 +1059,27 @@ def produce_rules( default_filter_rules_input, ) - theory_parameters = theoryid.get_description() - if filter_rules is None: # Don't bother loading the rules if we are not using them. if use_cuts is not CutsPolicy.INTERNAL: return None if default_filter_rules_recorded_spec_ is not None: + # For when using a lockfile as a runcard filter_rules = default_filter_rules_recorded_spec_[default_filter_rules] + elif default_filter_rules is not None: + # For when a rules spec is specified + filter_rules = self.load_default_default_filter_rules(default_filter_rules) else: filter_rules = default_filter_rules_input() + if theoryid is None: + raise ConfigError( + "Valid theoryid is required when rules are set to " + f"`{CutsPolicy.INTERNAL}`" + ) + + theory_parameters = theoryid.get_description() + try: rule_list = [ Rule( @@ -1148,12 +1156,17 @@ def produce_defaults( raise ConfigError("w2min defined multiple times with different values") if default_filter_settings_recorded_spec_ is not None: + # If running on a lockfile filter_defaults = default_filter_settings_recorded_spec_[ default_filter_settings ] # If we find recorded specs return immediately and don't read q2min and w2min # from runcard return filter_defaults + elif default_filter_settings is not None: + # If the user requests to read from a pre existing settings lockfile + filter_defaults = self.load_default_default_filter_settings(default_filter_settings) + defaults_loaded = True elif not filter_defaults: filter_defaults = default_filter_settings_input() defaults_loaded = True