atlas-ftag-tools 0.0.5__tar.gz → 0.0.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/PKG-INFO +1 -1
  2. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/atlas_ftag_tools.egg-info/PKG-INFO +1 -1
  3. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/atlas_ftag_tools.egg-info/requires.txt +2 -2
  4. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/__init__.py +1 -1
  5. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/hdf5/h5reader.py +2 -1
  6. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/mock.py +45 -45
  7. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/pyproject.toml +2 -2
  8. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/MANIFEST.in +0 -0
  9. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/README.md +0 -0
  10. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/atlas_ftag_tools.egg-info/SOURCES.txt +0 -0
  11. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/atlas_ftag_tools.egg-info/dependency_links.txt +0 -0
  12. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/atlas_ftag_tools.egg-info/top_level.txt +0 -0
  13. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/cuts.py +0 -0
  14. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/flavour.py +0 -0
  15. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/flavours.yaml +0 -0
  16. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/hdf5/__init__.py +0 -0
  17. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/hdf5/h5utils.py +0 -0
  18. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/hdf5/h5writer.py +0 -0
  19. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/region.py +0 -0
  20. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/sample.py +0 -0
  21. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/ftag/vds.py +0 -0
  22. {atlas-ftag-tools-0.0.5 → atlas-ftag-tools-0.0.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atlas-ftag-tools
3
- Version: 0.0.5
3
+ Version: 0.0.6
4
4
  Summary: ATLAS Flavour Tagging Tools
5
5
  Author: Sam Van Stroud, Philipp Gadow
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atlas-ftag-tools
3
- Version: 0.0.5
3
+ Version: 0.0.6
4
4
  Summary: ATLAS Flavour Tagging Tools
5
5
  Author: Sam Van Stroud, Philipp Gadow
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
- h5py
1
+ h5py>=3.0
2
2
  numpy
3
- PyYAML
3
+ PyYAML>=5.1
4
4
 
5
5
  [dev]
6
6
  black==23.1.0
@@ -1,7 +1,7 @@
1
1
  """atlas-ftag-tools - Common tools for ATLAS flavour tagging software."""
2
2
 
3
3
 
4
- __version__ = "v0.0.5"
4
+ __version__ = "v0.0.6"
5
5
 
6
6
  from pathlib import Path
7
7
 
@@ -74,13 +74,14 @@ class H5SingleReader:
74
74
  variables = {self.jets_name: None}
75
75
 
76
76
  total = 0
77
+ rng = np.random.default_rng(42)
77
78
  with h5py.File(self.fname) as f:
78
79
  data = {name: self.empty(f[name], var) for name, var in variables.items()}
79
80
 
80
81
  # get indices
81
82
  indices = list(range(0, self.num_jets, self.batch_size))
82
83
  if self.shuffle:
83
- np.random.default_rng(42).shuffle(indices)
84
+ rng.shuffle(indices)
84
85
 
85
86
  # loop over batches and read file
86
87
  for low in indices:
@@ -11,40 +11,41 @@ from ftag.hdf5 import join_structured_arrays
11
11
  __all__ = ["get_mock_file"]
12
12
 
13
13
  JET_VARS = [
14
- "pt",
15
- "eta",
16
- "abs_eta",
17
- "mass",
18
- "pt_btagJes",
19
- "eta_btagJes",
20
- "n_tracks",
21
- "HadronConeExclTruthLabelID",
22
- "HadronConeExclTruthLabelPt",
23
- "n_truth_promptLepton",
14
+ ("pt", "f4"),
15
+ ("eta", "f4"),
16
+ ("abs_eta", "f4"),
17
+ ("mass", "f4"),
18
+ ("pt_btagJes", "f4"),
19
+ ("eta_btagJes", "f4"),
20
+ ("n_tracks", "i4"),
21
+ ("HadronConeExclTruthLabelID", "i4"),
22
+ ("HadronConeExclTruthLabelPt", "f4"),
23
+ ("n_truth_promptLepton", "i4"),
24
+ ("flavour_label", "i4"),
24
25
  ]
25
26
 
26
27
  TRACK_VARS = [
27
- "d0",
28
- "z0SinTheta",
29
- "dphi",
30
- "deta",
31
- "qOverP",
32
- "IP3D_signed_d0_significance",
33
- "IP3D_signed_z0_significance",
34
- "phiUncertainty",
35
- "thetaUncertainty",
36
- "qOverPUncertainty",
37
- "numberOfPixelHits",
38
- "numberOfSCTHits",
39
- "numberOfInnermostPixelLayerHits",
40
- "numberOfNextToInnermostPixelLayerHits",
41
- "numberOfInnermostPixelLayerSharedHits",
42
- "numberOfInnermostPixelLayerSplitHits",
43
- "numberOfPixelSharedHits",
44
- "numberOfPixelSplitHits",
45
- "numberOfSCTSharedHits",
46
- "numberOfPixelHoles",
47
- "numberOfSCTHoles",
28
+ ("d0", "f4"),
29
+ ("z0SinTheta", "f4"),
30
+ ("dphi", "f4"),
31
+ ("deta", "f4"),
32
+ ("qOverP", "f4"),
33
+ ("IP3D_signed_d0_significance", "f4"),
34
+ ("IP3D_signed_z0_significance", "f4"),
35
+ ("phiUncertainty", "f4"),
36
+ ("thetaUncertainty", "f4"),
37
+ ("qOverPUncertainty", "f4"),
38
+ ("numberOfPixelHits", "i4"),
39
+ ("numberOfSCTHits", "i4"),
40
+ ("numberOfInnermostPixelLayerHits", "i4"),
41
+ ("numberOfNextToInnermostPixelLayerHits", "i4"),
42
+ ("numberOfInnermostPixelLayerSharedHits", "i4"),
43
+ ("numberOfInnermostPixelLayerSplitHits", "i4"),
44
+ ("numberOfPixelSharedHits", "i4"),
45
+ ("numberOfPixelSplitHits", "i4"),
46
+ ("numberOfSCTSharedHits", "i4"),
47
+ ("numberOfPixelHoles", "i4"),
48
+ ("numberOfSCTHoles", "i4"),
48
49
  ]
49
50
 
50
51
 
@@ -55,7 +56,7 @@ def softmax(x, axis=None):
55
56
 
56
57
 
57
58
  def get_mock_scores(labels: np.ndarray):
58
- rng = np.random.default_rng()
59
+ rng = np.random.default_rng(42)
59
60
  scores = np.zeros((len(labels), 3))
60
61
  for label, count in zip(*np.unique(labels, return_counts=True)):
61
62
  if label == 0:
@@ -70,34 +71,33 @@ def get_mock_scores(labels: np.ndarray):
70
71
  return scores
71
72
 
72
73
 
73
- def get_mock_file(num_jets=1000, add_tagger_scores=False, tracks_name: str = "tracks"):
74
- # settings
75
- n_tracks_per_jet = 40
76
-
74
+ def get_mock_file(num_jets=1000, tracks_name: str = "tracks", num_tracks: int = 40):
77
75
  # setup jets
78
- rng = np.random.default_rng()
79
- jets_dtype = np.dtype([(n, "f4") for n in JET_VARS])
76
+ rng = np.random.default_rng(42)
77
+ jets_dtype = np.dtype(JET_VARS)
80
78
  jets = u2s(rng.random((num_jets, len(JET_VARS))), jets_dtype)
81
- jets["HadronConeExclTruthLabelID"] = np.random.choice([0, 4, 5], size=num_jets)
79
+ jets["HadronConeExclTruthLabelID"] = rng.choice([0, 4, 5], size=num_jets)
80
+ jets["flavour_label"] = rng.choice([0, 4, 5], size=num_jets)
82
81
  jets["pt"] *= 400e3
83
82
  jets["mass"] *= 50e3
84
83
  jets["eta"] = (jets["eta"] - 0.5) * 6.0
85
84
  jets["abs_eta"] = np.abs(jets["eta"])
86
85
  jets["n_truth_promptLepton"] = 0
87
86
 
88
- if add_tagger_scores:
89
- scores = get_mock_scores(jets["HadronConeExclTruthLabelID"])
90
- jets = join_structured_arrays([jets, scores])
87
+ # add tagger scores
88
+ scores = get_mock_scores(jets["HadronConeExclTruthLabelID"])
89
+ jets = join_structured_arrays([jets, scores])
91
90
 
91
+ # create a tempfile in a new folder
92
92
  fname = NamedTemporaryFile(suffix=".h5", dir=mkdtemp()).name
93
93
  f = h5py.File(fname, "w")
94
94
  f.create_dataset("jets", data=jets)
95
95
 
96
96
  # setup tracks
97
97
  if tracks_name:
98
- tracks_dtype = np.dtype([(n, "f4") for n in TRACK_VARS])
99
- tracks = u2s(rng.random((num_jets, n_tracks_per_jet, len(TRACK_VARS))), tracks_dtype)
100
- valid = rng.choice([True, False], size=(num_jets, n_tracks_per_jet))
98
+ tracks_dtype = np.dtype(TRACK_VARS)
99
+ tracks = u2s(rng.random((num_jets, num_tracks, len(TRACK_VARS))), tracks_dtype)
100
+ valid = rng.choice([True, False], size=(num_jets, num_tracks))
101
101
  valid = valid.astype(bool).view(dtype=np.dtype([("valid", bool)]))
102
102
  tracks = join_structured_arrays([tracks, valid])
103
103
  f.create_dataset(tracks_name, data=tracks)
@@ -7,9 +7,9 @@ license = {text = "MIT"}
7
7
  readme = "README.md"
8
8
  requires-python = ">=3.8"
9
9
  dependencies = [
10
- "h5py",
10
+ "h5py>=3.0", # requires numpy
11
11
  "numpy",
12
- "PyYAML"
12
+ "PyYAML>=5.1"
13
13
  ]
14
14
 
15
15
  [project.urls]