115 addDefaults = {}, addMandatories=[]):
117 This method adds additional items to the `self.general` dictionary
118 which are only needed for validations using datasets.
121 - `valName`: String which identifies individual validation instances
122 - `alignment`: `Alignment` instance to validate
123 - `config`: `BetterConfigParser` instance which includes the
124 configuration of the validations
125 - `valType`: String which specifies the type of validation
126 - `addDefaults`: Dictionary which contains default values for individual
127 validations in addition to the general default values
128 - `addMandatories`: List which contains mandatory parameters for
129 individual validations in addition to the general
131 (currently there are no general mandatories)
134 GenericValidation.__init__(self, valName, alignment, config)
135 defaults = {
"jobmode": self.
jobmode,
143 defaults.update(addDefaults)
145 mandatories += addMandatories
146 theUpdate = config.getResultingSection(valType+
":"+self.
name,
147 defaultDict = defaults,
148 demandPars = mandatories)
149 self.general.update(theUpdate)
152 knownOpts = defaults.keys()+mandatories
154 if self.jobmode.split(
",")[0] ==
"crab" \
155 or self.__class__.__name__==
"OfflineValidationParallel":
156 knownOpts.append(
"parallelJobs")
158 ignoreOpts.append(
"parallelJobs")
159 config.checkInput(valType+
":"+self.
name,
160 knownSimpleOptions = knownOpts,
161 ignoreOptions = ignoreOpts)
163 if self.
general[
"dataset"]
not in globalDictionaries.usedDatasets:
164 globalDictionaries.usedDatasets[self.
general[
"dataset"]] =
Dataset(
166 self.
dataset = globalDictionaries.usedDatasets[self.
general[
"dataset"]]
168 if not self.jobmode.split(
',' )[0] ==
"crab":
170 self.
general[
"datasetDefinition"] = self.dataset.datasetSnippet(
171 jsonPath = self.
general[
"JSON"],
172 nEvents = self.
general[
"maxevents"],
173 firstRun = self.
general[
"firstRun"],
174 lastRun = self.
general[
"lastRun"],
177 except AllInOneError, e:
178 msg =
"In section [%s:%s]: "%(valType, self.
name)
182 if self.dataset.predefined():
183 msg = (
"For jobmode 'crab' you cannot use predefined datasets "
184 "(in your case: '%s')."%( self.dataset.name() ))
187 theUpdate = config.getResultingSection(valType+
":"+self.
name,
188 demandPars = [
"parallelJobs"])
189 except AllInOneError, e:
190 msg = str(e)[:-1]+
" when using 'jobmode: crab'."
192 self.general.update(theUpdate)
197 self.
general[
"lastRun"] ) = self.dataset.convertTimeToRun(
198 firstRun = self.
general[
"firstRun"],
199 lastRun = self.
general[
"lastRun"],
203 if self.
general[
"begin"] ==
None:
205 if self.
general[
"end"] ==
None:
209 if (
not self.
general[
"firstRun"] )
and \
211 self.
general[
"firstRun"] = str(
212 self.dataset.runList()[0][
"run_number"])
213 if (
not self.
general[
"lastRun"] )
and \
216 self.dataset.runList()[-1][
"run_number"])
219 msg = (
"The lower time/runrange limit ('begin'/'firstRun') "
220 "chosen is greater than the upper time/runrange limit "
221 "('end'/'lastRun').")
224 +
'-' + self.
general[
"lastRun"])
226 self.
general[
"datasetDefinition"] = self.dataset.datasetSnippet(
227 jsonPath = self.
general[
"JSON"],
228 nEvents = self.
general[
"maxevents"],
229 firstRun = self.
general[
"firstRun"],
230 lastRun = self.
general[
"lastRun"],
234 except AllInOneError, e:
235 msg =
"In section [%s:%s]: "%(valType, self.
name)