atlas-ftag-tools 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.whl
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.
- {atlas_ftag_tools-0.2.1.dist-info → atlas_ftag_tools-0.2.2.dist-info}/METADATA +3 -3
- {atlas_ftag_tools-0.2.1.dist-info → atlas_ftag_tools-0.2.2.dist-info}/RECORD +11 -11
- {atlas_ftag_tools-0.2.1.dist-info → atlas_ftag_tools-0.2.2.dist-info}/WHEEL +1 -1
- ftag/__init__.py +1 -1
- ftag/flavours.yaml +22 -0
- ftag/hdf5/h5reader.py +1 -1
- ftag/hdf5/h5writer.py +15 -2
- ftag/mock.py +0 -1
- ftag/wps/discriminant.py +5 -0
- {atlas_ftag_tools-0.2.1.dist-info → atlas_ftag_tools-0.2.2.dist-info}/entry_points.txt +0 -0
- {atlas_ftag_tools-0.2.1.dist-info → atlas_ftag_tools-0.2.2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: atlas-ftag-tools
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.2
|
4
4
|
Summary: ATLAS Flavour Tagging Tools
|
5
5
|
Author: Sam Van Stroud, Philipp Gadow
|
6
6
|
License: MIT
|
@@ -11,8 +11,8 @@ Requires-Dist: h5py >=3.0
|
|
11
11
|
Requires-Dist: numpy
|
12
12
|
Requires-Dist: PyYAML >=5.1
|
13
13
|
Provides-Extra: dev
|
14
|
-
Requires-Dist: ruff ==0.
|
15
|
-
Requires-Dist: mypy ==1.
|
14
|
+
Requires-Dist: ruff ==0.6.2 ; extra == 'dev'
|
15
|
+
Requires-Dist: mypy ==1.11.2 ; extra == 'dev'
|
16
16
|
Requires-Dist: pre-commit ==3.1.1 ; extra == 'dev'
|
17
17
|
Requires-Dist: pytest ==7.2.2 ; extra == 'dev'
|
18
18
|
Requires-Dist: pytest-cov ==4.0.0 ; extra == 'dev'
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ftag/__init__.py,sha256=
|
1
|
+
ftag/__init__.py,sha256=7IKOa65yKaQWsx6-s7VVQs4t1NQ9hyVAOlj-U5m-VBk,629
|
2
2
|
ftag/cli_utils.py,sha256=w3TtQmUHSyAKChS3ewvOtcSDAUJAZGIIomaNi8f446U,298
|
3
3
|
ftag/cuts.py,sha256=a0BJj4cVRunc-hFLPloGvNoSFvRmZg2kVLv7sA0iAaI,2817
|
4
4
|
ftag/flavour.py,sha256=qvgp4DarOdcQgjae_NWnd81k_YqdmFY74lOKky2lpb8,3568
|
5
|
-
ftag/flavours.yaml,sha256=
|
5
|
+
ftag/flavours.yaml,sha256=lFnVwjh_DwLhOc3mr5n6bSIWyHgxQvAXas4lEmEDncU,7520
|
6
6
|
ftag/git_check.py,sha256=Y-XqM80CVXZ5ZKrDdZcYOJt3X64uU6W3OP6Z0D7AZU0,1663
|
7
|
-
ftag/mock.py,sha256=
|
7
|
+
ftag/mock.py,sha256=QAm0ti6FWDCRtIyay4yozbGNNATDQbq5b1uc8uVhi2s,4275
|
8
8
|
ftag/region.py,sha256=ANv0dGI2W6NJqD9fp7EfqAUReH4FOjc1gwl_Qn8llcM,360
|
9
9
|
ftag/sample.py,sha256=TFXMhDkbPmjkms9-b-bINJ32T3bO86JcU70C0nY7wa8,2500
|
10
10
|
ftag/test_cli_utils.py,sha256=xa08vf6SEOow58SSFagYdAselb-dkNOVvWsWheMnW-g,1001
|
@@ -12,15 +12,15 @@ ftag/transform.py,sha256=uEGGJSnqoKOzLYQv650XdK_kDNw4Aw-5dc60z9Dp_y0,3963
|
|
12
12
|
ftag/vds.py,sha256=nRViQZQIORB95nC7NZsW3KsSoGkLzEdOsuCViH5h8-U,3296
|
13
13
|
ftag/hdf5/__init__.py,sha256=LFDNxVOCp58SvLHwQhdT68Q-KBMS_i6jBrbXoRpHzbM,354
|
14
14
|
ftag/hdf5/h5move.py,sha256=oYpRu0IDCIJIQ2ML52HBAdoyDxmKkHTeM9JdbPEgKfI,947
|
15
|
-
ftag/hdf5/h5reader.py,sha256=
|
15
|
+
ftag/hdf5/h5reader.py,sha256=H_5Aw0lOyEzK_phMRhD-jR_OSCsXnCA3qJZnRvPqaRU,13569
|
16
16
|
ftag/hdf5/h5split.py,sha256=4Wy6Xc3J58MdD9aBaSZHf5ZcVFnJSkWsm42R5Pgo-R4,2448
|
17
17
|
ftag/hdf5/h5utils.py,sha256=-4zKTMtNCrDZr_9Ww7uzfsB7M7muBKpmm_1IkKJnHOI,3222
|
18
|
-
ftag/hdf5/h5writer.py,sha256=
|
18
|
+
ftag/hdf5/h5writer.py,sha256=j3Fy8snkiVVfimiUz3rrZOhSV8OF27978Y9pk0QcTGM,5277
|
19
19
|
ftag/wps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
-
ftag/wps/discriminant.py,sha256=
|
20
|
+
ftag/wps/discriminant.py,sha256=kJFekUTPNIvCabJCon6OqOAQEzz5hj3XrWFFRLOgGOs,3836
|
21
21
|
ftag/wps/working_points.py,sha256=VTU6OD40ULAJQD0MlD1EZd33q8ociUvFX1YrhgJFvXc,9722
|
22
|
-
atlas_ftag_tools-0.2.
|
23
|
-
atlas_ftag_tools-0.2.
|
24
|
-
atlas_ftag_tools-0.2.
|
25
|
-
atlas_ftag_tools-0.2.
|
26
|
-
atlas_ftag_tools-0.2.
|
22
|
+
atlas_ftag_tools-0.2.2.dist-info/METADATA,sha256=y2fq23cqtkaoUQxEiCrdoTVuBcG154yjo4k4cwf8P-A,5169
|
23
|
+
atlas_ftag_tools-0.2.2.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
24
|
+
atlas_ftag_tools-0.2.2.dist-info/entry_points.txt,sha256=LfVLsZHQolqbPnwPgtmc5IQTh527BKkN2v-IpXWTNHw,137
|
25
|
+
atlas_ftag_tools-0.2.2.dist-info/top_level.txt,sha256=qiYQuKcAvMim-31FwkT3MTQu7WQm0s58tPAia5KKWqs,5
|
26
|
+
atlas_ftag_tools-0.2.2.dist-info/RECORD,,
|
ftag/__init__.py
CHANGED
ftag/flavours.yaml
CHANGED
@@ -47,6 +47,28 @@
|
|
47
47
|
colour: gold
|
48
48
|
category: single-btag-extended
|
49
49
|
|
50
|
+
# single b-tagging (ghost association)
|
51
|
+
- name: ghostbjets
|
52
|
+
label: $b$-jets
|
53
|
+
cuts: ["HadronGhostTruthLabelID == 5"]
|
54
|
+
colour: tab:blue
|
55
|
+
category: single-btag-ghost
|
56
|
+
- name: ghostcjets
|
57
|
+
label: $c$-jets
|
58
|
+
cuts: ["HadronGhostTruthLabelID == 4"]
|
59
|
+
colour: tab:orange
|
60
|
+
category: single-btag-ghost
|
61
|
+
- name: ghostujets
|
62
|
+
label: Light-jets
|
63
|
+
cuts: ["HadronGhostTruthLabelID == 0"]
|
64
|
+
colour: tab:green
|
65
|
+
category: single-btag-ghost
|
66
|
+
- name: ghosttaujets
|
67
|
+
label: $\tau$-jets
|
68
|
+
cuts: ["HadronGhostTruthLabelID == 15"]
|
69
|
+
colour: tab:purple
|
70
|
+
category: single-btag-ghost
|
71
|
+
|
50
72
|
# Xbb tagging
|
51
73
|
- name: hbb
|
52
74
|
label: $H \rightarrow b\bar{b}$
|
ftag/hdf5/h5reader.py
CHANGED
@@ -60,7 +60,7 @@ class H5SingleReader:
|
|
60
60
|
for var in array.dtype.names:
|
61
61
|
isinf = np.isinf(array[var])
|
62
62
|
isinf = isinf if name == self.jets_name else isinf.any(axis=-1)
|
63
|
-
keep_idx
|
63
|
+
keep_idx &= ~isinf
|
64
64
|
if num_inf := isinf.sum():
|
65
65
|
log.warning(
|
66
66
|
f"{num_inf} inf values detected for variable {var} in"
|
ftag/hdf5/h5writer.py
CHANGED
@@ -41,7 +41,7 @@ class H5Writer:
|
|
41
41
|
jets_name: str = "jets"
|
42
42
|
add_flavour_label: bool = False
|
43
43
|
compression: str = "lzf"
|
44
|
-
precision: str
|
44
|
+
precision: str = "full"
|
45
45
|
shuffle: bool = True
|
46
46
|
|
47
47
|
def __post_init__(self):
|
@@ -51,6 +51,13 @@ class H5Writer:
|
|
51
51
|
assert len(set(self.num_jets)) == 1, "Must have same number of jets per group"
|
52
52
|
self.num_jets = self.num_jets[0]
|
53
53
|
|
54
|
+
if self.precision == "full":
|
55
|
+
self.fp_dtype = np.float32
|
56
|
+
elif self.precision == "half":
|
57
|
+
self.fp_dtype = np.float16
|
58
|
+
else:
|
59
|
+
raise ValueError(f"Invalid precision: {self.precision}")
|
60
|
+
|
54
61
|
self.dst = Path(self.dst)
|
55
62
|
self.dst.parent.mkdir(parents=True, exist_ok=True)
|
56
63
|
self.file = h5py.File(self.dst, "w")
|
@@ -77,11 +84,17 @@ class H5Writer:
|
|
77
84
|
if name == self.jets_name and self.add_flavour_label:
|
78
85
|
dtype = np.dtype([*dtype.descr, ("flavour_label", "i4")])
|
79
86
|
|
87
|
+
# adjust dtype based on specified precision
|
88
|
+
dtype = np.dtype([
|
89
|
+
(field, self.fp_dtype if np.issubdtype(dt, np.floating) else dt)
|
90
|
+
for field, dt in dtype.descr
|
91
|
+
])
|
92
|
+
|
80
93
|
# optimal chunking is around 100 jets, only aply for track groups
|
81
94
|
shape = self.shapes[name]
|
82
95
|
chunks = (100,) + shape[1:] if shape[1:] else None
|
83
96
|
|
84
|
-
# note: enabling the hd5 shuffle filter doesn't improve
|
97
|
+
# note: enabling the hd5 shuffle filter doesn't improve write performance
|
85
98
|
self.file.create_dataset(
|
86
99
|
name, dtype=dtype, shape=shape, compression=self.compression, chunks=chunks
|
87
100
|
)
|
ftag/mock.py
CHANGED
ftag/wps/discriminant.py
CHANGED
@@ -100,6 +100,11 @@ def get_discriminant(
|
|
100
100
|
-------
|
101
101
|
np.ndarray
|
102
102
|
Array of discriminant values.
|
103
|
+
|
104
|
+
Raises
|
105
|
+
------
|
106
|
+
ValueError
|
107
|
+
If the signal flavour is not recognised.
|
103
108
|
"""
|
104
109
|
tagger_funcs: dict[str, Callable] = {
|
105
110
|
"bjets": btag_discriminant,
|
File without changes
|
File without changes
|