Ejemplo n.º 1
0
    def __init__(self, config, name):
        head = [(0, "Nickname")]

        # Mapping between nickname and config files:
        cfgList = config.get("nickname config", "")
        self.nmCfg = config.getDict(
            "nickname config", {}, parser=lambda x: map(str.strip, x.split(",")), str=lambda x: str.join(",", x)
        )[0]
        if cfgList:
            if "config file" in config.getOptions():
                raise ConfigError("Please use 'nickname config' instead of 'config file'")
            allConfigFiles = utils.flatten(self.nmCfg.values())
            config.set("config file", str.join("\n", allConfigFiles))
            head.append((1, "Config file"))

            # Mapping between nickname and constants:
        self.nmCName = map(str.strip, config.get("nickname constants", "").split())
        self.nmConst = {}
        for var in self.nmCName:
            tmp = config.getDict(var, {})[0]
            for (nick, value) in tmp.items():
                if value:
                    self.nmConst.setdefault(nick, {})[var] = value
                else:
                    self.nmConst.setdefault(nick, {})[var] = ""
            head.append((var, var))

            # Mapping between nickname and lumi filter:
        if "lumi filter" in config.getOptions():
            raise ConfigError("Please use 'nickname lumi filter' instead of 'lumi filter'")
        lumiParse = lambda x: formatLumi(parseLumiFilter(x))
        self.nmLumi = config.getDict("nickname lumi filter", {}, parser=lumiParse)[0]
        if self.nmLumi:
            for dataset in config.get("dataset", "").splitlines():
                (datasetNick, datasetProvider, datasetExpr) = DataProvider.parseDatasetExpr(config, dataset, None)
                config.set(
                    "dataset %s" % datasetNick,
                    "lumi filter",
                    str.join(",", utils.flatten(fromNM(self.nmLumi, datasetNick, []))),
                )
            config.set("lumi filter", str.join(",", self.nmLumi.get(None, [])))
            head.append((2, "Lumi filter"))

        utils.vprint("Mapping between nickname and other settings:\n", -1)

        def report():
            for nick in sorted(set(self.nmCfg.keys() + self.nmConst.keys() + self.nmLumi.keys())):
                tmp = {
                    0: nick,
                    1: str.join(", ", map(os.path.basename, self.nmCfg.get(nick, ""))),
                    2: self.displayLumi(self.nmLumi.get(nick, "")),
                }
                yield utils.mergeDicts([tmp, self.nmConst.get(nick, {})])

        utils.printTabular(head, report(), "cl")
        utils.vprint(level=-1)
        CMSSW.__init__(self, config, name)
Ejemplo n.º 2
0
 def getVarsForNick(self, nick):
     data = {"CMSSW_CONFIG": str.join(" ", map(os.path.basename, utils.flatten(fromNM(self.nmCfg, nick, ""))))}
     constants = utils.mergeDicts(fromNM(self.nmConst, None, {}) + fromNM(self.nmConst, nick, {}))
     constants = dict(map(lambda var: (var, constants.get(var, "")), self.nmCName))
     data.update(constants)
     lumifilter = utils.flatten(fromNM(self.nmLumi, nick, ""))
     if lumifilter:
         data["LUMI_RANGE"] = parseLumiFilter(str.join(",", lumifilter))
     return data
Ejemplo n.º 3
0
	def __init__(self, config, name):
		self._name = name # needed for changeView calls before the constructor
		head = [(0, 'Nickname')]

		# Mapping between nickname and config files:
		self._nmCfg = config.getLookup('nickname config', {}, defaultMatcher = 'regex',
			parser = lambda x: lmap(str.strip, x.split(',')), strfun = lambda x: str.join(',', x))
		if not self._nmCfg.empty():
			if 'config file' in config.getOptions():
				raise ConfigError("Please use 'nickname config' instead of 'config file'")
			allConfigFiles = utils.flatten(self._nmCfg.get_values())
			config.set('config file', str.join('\n', allConfigFiles))
			head.append((1, 'Config file'))

		# Mapping between nickname and constants - only display - work is handled by the 'normal' parameter factory
		nmCName = config.getList('nickname constants', [], onChange = None)
		pconfig = config.changeView(viewClass = 'TaggedConfigView', setClasses = None, setNames = None, addSections = ['parameters'])
		pconfig.set('constants', str.join(' ', nmCName), '+=')
		for cName in nmCName:
			pconfig.set(cName + ' matcher', 'regex', '?=')
			pconfig.set(cName + ' lookup', 'DATASETNICK', '?=')
			head.append((cName, cName))

		# Mapping between nickname and lumi filter - only display - work is handled by the 'normal' lumi filter
		if ('lumi filter' in config.getOptions()) and ('nickname lumi filter' in config.getOptions()):
			raise ConfigError('Please use "lumi filter" exclusively')
		config.set('lumi filter matcher', 'regex', '?=')
		config.set('lumi filter', strDictLong(config.getDict('nickname lumi filter', {}, onChange = None)))
		self._nmLumi = config.getLookup('lumi filter', {}, parser = parseLumiFilter, strfun = strLumi, onChange = None)
		if not self._nmLumi.empty():
			head.append((2, 'Lumi filter'))

		CMSSW.__init__(self, config, name)
		self._displaySetup(config.getWorkPath('datacache.dat'), head)
Ejemplo n.º 4
0
    def __init__(self, config, name):
        self._name = name  # needed for changeView calls before the constructor
        head = [('DATASETNICK', 'Nickname')]

        # Mapping between nickname and config files:
        self._nmCfg = config.getLookup(
            'nickname config', {},
            defaultMatcher='regex',
            parser=lambda x: lmap(str.strip, x.split(',')),
            strfun=lambda x: str.join(',', x))
        if not self._nmCfg.empty():
            if 'config file' in config.getOptions():
                raise ConfigError(
                    "Please use 'nickname config' instead of 'config file'")
            allConfigFiles = sorted(
                set(utils.flatten(self._nmCfg.get_values())))
            config.set('config file', str.join('\n', allConfigFiles))
            head.append((1, 'Config file'))

        # Mapping between nickname and constants - only display - work is handled by the 'normal' parameter factory
        nmCName = config.getList('nickname constants', [], onChange=None)
        param_config = config.changeView(viewClass='TaggedConfigView',
                                         setClasses=None,
                                         setNames=None,
                                         addSections=['parameters'])
        param_config.set('constants', str.join(' ', nmCName), '+=')
        for cName in nmCName:
            param_config.set(cName + ' matcher', 'regex')
            param_config.set(cName + ' lookup', 'DATASETNICK')
            head.append((cName, cName))

        # Mapping between nickname and lumi filter - only display - work is handled by the 'normal' lumi filter
        if ('lumi filter' in config.getOptions()) and ('nickname lumi filter'
                                                       in config.getOptions()):
            raise ConfigError('Please use "lumi filter" exclusively')
        config.set('lumi filter matcher', 'regex')
        config.set(
            'lumi filter',
            strDictLong(
                config.getDict('nickname lumi filter', {}, onChange=None)))
        self._nmLumi = config.getLookup('lumi filter', {},
                                        parser=parseLumiFilter,
                                        strfun=strLumi,
                                        onChange=None)
        if not self._nmLumi.empty():
            head.append((2, 'Lumi filter'))

        CMSSW.__init__(self, config, name)
        self._displaySetup(config.getWorkPath('datacache.dat'), head)
Ejemplo n.º 5
0
	def _getQueryArgs(self):
		"""ClassAd names to query Condor with"""
		qqM = self._getQueueQueryMap()
		return utils.flatten(qqM.values())