ATLAS Offline Software
Loading...
Searching...
No Matches
python.Versioning Namespace Reference

Functions

 legacyReleaseData ()
 legacyReleaseDataSampleTagOverrides ()
 legacyReleaseDataSampleGeneratorOverrides ()
 generatorsGetInitialVersionedDictionary (generators)
 generatorsGetFromMetadata (metadataString)
 generatorsVersionedStringList (generatorsDictionary)
 generatorsVersionedString (generatorsVersionedList)
 GeneratorVersioningFixCfg (flags)

Variables

 versionRegex = re.compile(r'\‍(v\.(.*)\‍)$')
list ignoredGenerators = ["Pythia8B", "Powheg"]

Function Documentation

◆ generatorsGetFromMetadata()

python.Versioning.generatorsGetFromMetadata ( metadataString)

Definition at line 65 of file Versioning.py.

65def generatorsGetFromMetadata(metadataString):
66 output = {}
67 metadataStringSplit = metadataString.split("+")
68 for s in metadataStringSplit:
69 match = versionRegex.search(s)
70 if match:
71 s = s.replace(match.group(0), "")
72 output[s] = match.group(1)
73 else:
74 output[s] = None
75 return output
76

◆ generatorsGetInitialVersionedDictionary()

python.Versioning.generatorsGetInitialVersionedDictionary ( generators)

Definition at line 58 of file Versioning.py.

58def generatorsGetInitialVersionedDictionary(generators):
59 output = {}
60 for generator in generators:
61 env_variable = f"{generator.upper()}VER"
62 output[generator] = getenv(env_variable, None)
63 return output
64

◆ generatorsVersionedString()

python.Versioning.generatorsVersionedString ( generatorsVersionedList)

Definition at line 86 of file Versioning.py.

86def generatorsVersionedString(generatorsVersionedList):
87 return "+".join(generatorsVersionedList)
88
89

◆ generatorsVersionedStringList()

python.Versioning.generatorsVersionedStringList ( generatorsDictionary)

Definition at line 77 of file Versioning.py.

77def generatorsVersionedStringList(generatorsDictionary):
78 list = []
79 for generator, version in generatorsDictionary.items():
80 if version is not None:
81 list.append(f"{generator}(v.{version})")
82 else:
83 list.append(generator)
84 return list
85

◆ GeneratorVersioningFixCfg()

python.Versioning.GeneratorVersioningFixCfg ( flags)

Definition at line 90 of file Versioning.py.

90def GeneratorVersioningFixCfg(flags):
91 from AthenaCommon.Logging import logging
92 log = logging.getLogger("GeneratorsInfo")
93 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
94
95 generatorsData = flags.Input.GeneratorsInfo
96 log.info(f"Generators data: {generatorsData}")
97
98 missingVersion = False
99 for k, v in generatorsData.items():
100 if v is None and k not in ignoredGenerators:
101 missingVersion = True
102
103 if not missingVersion:
104 return ComponentAccumulator()
105
106 log.info("At least one MC generator is missing version information. Attempting to fix...")
107
108 from PyUtils.AMITagHelperConfig import inputAMITags
109 tags = inputAMITags(flags, fixBroken=True, silent=True)
110 tag = None
111 if tags and tags[0].startswith("e"):
112 tag = tags[0]
113
114 # Fix specific samples directly
115 releaseDataSampleGeneratorOverridesDict = legacyReleaseDataSampleGeneratorOverrides()
116 if flags.Input.MCChannelNumber and flags.Input.MCChannelNumber in releaseDataSampleGeneratorOverridesDict:
117 overrides = releaseDataSampleGeneratorOverridesDict[flags.Input.MCChannelNumber]
118 log.warning(f"Overriding generators to {'+'.join(overrides.keys())}.")
119 generatorsData = {}
120 for generator, version in overrides.items():
121 if version is not None:
122 log.warning(f"Overriding version for {generator} to {version}.")
123 generatorsData[generator] = version
124
125 outputStringList = generatorsVersionedStringList(generatorsData)
126
127 from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
128 return TagInfoMgrCfg(flags, tagValuePairs={"generators": generatorsVersionedString(outputStringList)})
129
130 # Fix specific samples' e-tag
131 releaseDataSampleTagOverridesDict = legacyReleaseDataSampleTagOverrides()
132 if flags.Input.MCChannelNumber and flags.Input.MCChannelNumber in releaseDataSampleTagOverridesDict:
133 log.warning(f"Overriding e-tag for sample {flags.Input.MCChannelNumber} to {releaseDataSampleTagOverridesDict[flags.Input.MCChannelNumber]}.")
134 tag = releaseDataSampleTagOverridesDict[flags.Input.MCChannelNumber]
135
136 # Retrieve generators release data
137 releaseDataDict = legacyReleaseData()
138 if tag not in releaseDataDict:
139 log.warning(f"Could not find release data for tag {tag}.")
140 return ComponentAccumulator()
141
142 # Apply release data to missing generators
143 releaseData = releaseDataDict[tag]
144 for k, v in generatorsData.items():
145 if v is None and k not in ignoredGenerators and k in releaseData:
146 log.info(f"Setting version for {k} to {releaseData[k]}.")
147 generatorsData[k] = releaseData[k]
148
149 outputStringList = generatorsVersionedStringList(generatorsData)
150
151 from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
152 return TagInfoMgrCfg(flags, tagValuePairs={"generators": generatorsVersionedString(outputStringList)})

◆ legacyReleaseData()

python.Versioning.legacyReleaseData ( )

Definition at line 10 of file Versioning.py.

10def legacyReleaseData():
11 from pathlib import Path
12 from PathResolver import PathResolver
13 filePath = Path(PathResolver.FindCalibFile("GeneratorConfig/Legacy_AthGeneration_versions.txt"))
14 data = {}
15 with filePath.open() as f:
16 header = f.readline().strip().split(",")
17 generators = header[2:]
18 for line in f:
19 line = line.strip().split(",")
20 item = {generator: version for generator, version in zip(generators, line[2:])}
21 item['version'] = line[0]
22 data[line[1]] = item
23 return data
24
static std::string FindCalibFile(const std::string &logical_file_name)
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177

◆ legacyReleaseDataSampleGeneratorOverrides()

python.Versioning.legacyReleaseDataSampleGeneratorOverrides ( )

Definition at line 40 of file Versioning.py.

40def legacyReleaseDataSampleGeneratorOverrides():
41 from pathlib import Path
42 from PathResolver import PathResolver
43 filePath = Path(PathResolver.FindCalibFile("GeneratorConfig/Legacy_SampleGeneratorOverrides.txt"))
44 data = {}
45 with filePath.open() as f:
46 f.readline() # skip header
47 for line in f:
48 line = line.strip()
49 if line[0] == "#":
50 continue
51 line = line.split(",")
52 versions = {}
53 for i in range(1, len(line), 2):
54 versions[line[i]] = line[i+1] if line[i+1] != "None" else None
55 data[int(line[0])] = versions
56 return data
57

◆ legacyReleaseDataSampleTagOverrides()

python.Versioning.legacyReleaseDataSampleTagOverrides ( )

Definition at line 25 of file Versioning.py.

25def legacyReleaseDataSampleTagOverrides():
26 from pathlib import Path
27 from PathResolver import PathResolver
28 filePath = Path(PathResolver.FindCalibFile("GeneratorConfig/Legacy_SampleTagOverrides.txt"))
29 data = {}
30 with filePath.open() as f:
31 f.readline() # skip header
32 for line in f:
33 line = line.strip()
34 if line[0] == "#":
35 continue
36 line = line.split(",")
37 data[int(line[0])] = line[1]
38 return data
39

Variable Documentation

◆ ignoredGenerators

list python.Versioning.ignoredGenerators = ["Pythia8B", "Powheg"]

Definition at line 7 of file Versioning.py.

◆ versionRegex

python.Versioning.versionRegex = re.compile(r'\‍(v\.(.*)\‍)$')

Definition at line 5 of file Versioning.py.