112 addDefaults = {}, addMandatories=[]):
114 This method adds additional items to the `self.general` dictionary
115 which are only needed for validations using datasets.
118 - `valName`: String which identifies individual validation instances
119 - `alignment`: `Alignment` instance to validate
120 - `config`: `BetterConfigParser` instance which includes the
121 configuration of the validations
122 - `valType`: String which specifies the type of validation
123 - `addDefaults`: Dictionary which contains default values for individual
124 validations in addition to the general default values
125 - `addMandatories`: List which contains mandatory parameters for
126 individual validations in addition to the general
128 (currently there are no general mandatories)
131 GenericValidation.__init__(self, valName, alignment, config)
132 defaults = {
"jobmode": self.
jobmode,
140 defaults.update(addDefaults)
142 mandatories += addMandatories
143 theUpdate = config.getResultingSection(valType+
":"+self.
name,
144 defaultDict = defaults,
145 demandPars = mandatories)
146 self.general.update(theUpdate)
149 knownOpts = defaults.keys()+mandatories
151 if self.jobmode.split(
",")[0] ==
"crab" \
152 or self.__class__.__name__==
"OfflineValidationParallel":
153 knownOpts.append(
"parallelJobs")
155 ignoreOpts.append(
"parallelJobs")
156 config.checkInput(valType+
":"+self.
name,
157 knownSimpleOptions = knownOpts,
158 ignoreOptions = ignoreOpts)
160 if self.
general[
"dataset"]
not in globalDictionaries.usedDatasets:
161 globalDictionaries.usedDatasets[self.
general[
"dataset"]] =
Dataset(
163 self.
dataset = globalDictionaries.usedDatasets[self.
general[
"dataset"]]
165 if not self.jobmode.split(
',' )[0] ==
"crab":
167 self.
general[
"datasetDefinition"] = self.dataset.datasetSnippet(
168 jsonPath = self.
general[
"JSON"],
169 nEvents = self.
general[
"maxevents"],
170 firstRun = self.
general[
"firstRun"],
171 lastRun = self.
general[
"lastRun"],
174 except AllInOneError, e:
175 msg =
"In section [%s:%s]: "%(valType, self.
name)
179 if self.dataset.predefined():
180 msg = (
"For jobmode 'crab' you cannot use predefined datasets "
181 "(in your case: '%s')."%( self.dataset.name() ))
184 theUpdate = config.getResultingSection(valType+
":"+self.
name,
185 demandPars = [
"parallelJobs"])
186 except AllInOneError, e:
187 msg = str(e)[:-1]+
" when using 'jobmode: crab'."
189 self.general.update(theUpdate)
194 self.
general[
"lastRun"] ) = self.dataset.convertTimeToRun(
195 firstRun = self.
general[
"firstRun"],
196 lastRun = self.
general[
"lastRun"],
200 if self.
general[
"begin"] ==
None:
202 if self.
general[
"end"] ==
None:
206 if (
not self.
general[
"firstRun"] )
and \
208 self.
general[
"firstRun"] = str(
209 self.dataset.runList()[0][
"run_number"])
210 if (
not self.
general[
"lastRun"] )
and \
213 self.dataset.runList()[-1][
"run_number"])
216 msg = (
"The lower time/runrange limit ('begin'/'firstRun') "
217 "chosen is greater than the upper time/runrange limit "
218 "('end'/'lastRun').")
221 +
'-' + self.
general[
"lastRun"])
223 self.
general[
"datasetDefinition"] = self.dataset.datasetSnippet(
224 jsonPath = self.
general[
"JSON"],
225 nEvents = self.
general[
"maxevents"],
226 firstRun = self.
general[
"firstRun"],
227 lastRun = self.
general[
"lastRun"],
231 except AllInOneError, e:
232 msg =
"In section [%s:%s]: "%(valType, self.
name)