petal-qc 0.0.19__py3-none-any.whl → 0.0.21__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.
Potentially problematic release.
This version of petal-qc might be problematic. Click here for more details.
- petal_qc/PetalReceptionTests.py +2 -2
- petal_qc/__init__.py +1 -1
- petal_qc/getPetalCoreTestSummary.py +61 -9
- petal_qc/metrology/petal_flatness.py +10 -9
- petal_qc/test/getAVStests.py +2 -2
- petal_qc/test/reportFromJSon.py +35 -6
- petal_qc/thermal/IRDataGetter.py +2 -0
- petal_qc/thermal/IRPetalParam.py +6 -2
- petal_qc/thermal/Petal_IR_Analysis.py +1 -1
- petal_qc/thermal/contours.py +46 -3
- {petal_qc-0.0.19.dist-info → petal_qc-0.0.21.dist-info}/METADATA +1 -1
- {petal_qc-0.0.19.dist-info → petal_qc-0.0.21.dist-info}/RECORD +15 -15
- {petal_qc-0.0.19.dist-info → petal_qc-0.0.21.dist-info}/WHEEL +1 -1
- {petal_qc-0.0.19.dist-info → petal_qc-0.0.21.dist-info}/entry_points.txt +0 -0
- {petal_qc-0.0.19.dist-info → petal_qc-0.0.21.dist-info}/top_level.txt +0 -0
petal_qc/PetalReceptionTests.py
CHANGED
|
@@ -112,9 +112,9 @@ class PetalReceptionTests(dbGtkUtils.ITkDBWindow):
|
|
|
112
112
|
self.create_test_box("Visual Inspection", "VISUAL_INSPECTION")
|
|
113
113
|
self.create_test_box("Grounding", "GROUNDING_CHECK")
|
|
114
114
|
self.create_test_box("Pipe bending", "BENDING120")
|
|
115
|
+
self.create_test_box("Delamination", "DELAMINATION")
|
|
115
116
|
self.create_test_box("Weight", "PETAL_CORE_WEIGHT")
|
|
116
|
-
self.create_test_box("
|
|
117
|
-
self.create_test_box("Slot loc. Diam", "PETAL_CORE_SLOT_DIAM")
|
|
117
|
+
self.create_test_box("Metrology Template", "METROLOGY_TEMPLATE")
|
|
118
118
|
self.create_test_box("X-rays", "XRAYIMAGING")
|
|
119
119
|
|
|
120
120
|
|
petal_qc/__init__.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import json
|
|
4
4
|
import sys
|
|
5
5
|
import re
|
|
6
|
+
import copy
|
|
6
7
|
from argparse import ArgumentParser
|
|
7
8
|
|
|
8
9
|
|
|
@@ -42,10 +43,35 @@ def petalCoreTest(session, options):
|
|
|
42
43
|
suff = options.institute
|
|
43
44
|
|
|
44
45
|
core_list = session.get("listComponents", json=payload)
|
|
45
|
-
|
|
46
|
+
|
|
47
|
+
# We want details about these tests
|
|
48
|
+
core_tests = [
|
|
49
|
+
"PETAL_METROLOGY_FRONT",
|
|
50
|
+
"PETAL_METROLOGY_BACK",
|
|
51
|
+
"XRAYIMAGING",
|
|
52
|
+
"THERMAL_EVALUATION",
|
|
53
|
+
"BTTESTING",
|
|
54
|
+
"METROLOGY_TEMPLATE",
|
|
55
|
+
"PETAL_CORE_WEIGHT"
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
# this is the full list
|
|
59
|
+
at_qc_tests = [
|
|
60
|
+
"VISUAL_INSPECTION",
|
|
61
|
+
"BTTESTING",
|
|
62
|
+
"GROUNDING_CHECK",
|
|
63
|
+
"BENDING120",
|
|
64
|
+
"THERMAL_EVALUATION",
|
|
65
|
+
"XRAYIMAGING",
|
|
66
|
+
"METROLOGY_TEMPLATE",
|
|
67
|
+
"PETAL_METROLOGY_FRONT",
|
|
68
|
+
"PETAL_METROLOGY_BACK",
|
|
69
|
+
"PETAL_CORE_WEIGHT",
|
|
70
|
+
"DELAMINATION",
|
|
71
|
+
]
|
|
46
72
|
|
|
47
73
|
do_check_stage = "AT_QC_SITE"
|
|
48
|
-
#do_check_stage = None
|
|
74
|
+
# do_check_stage = None
|
|
49
75
|
petal_id_db = {}
|
|
50
76
|
|
|
51
77
|
has_list = len(options.cores) != 0
|
|
@@ -76,19 +102,29 @@ def petalCoreTest(session, options):
|
|
|
76
102
|
return False
|
|
77
103
|
|
|
78
104
|
print("\n\nPetal {} [{}] - {}. {}".format(SN, altid, coreStage, location))
|
|
79
|
-
|
|
80
|
-
test_list = session.get("listTestRunsByComponent", json={"filterMap":{"serialNumber": SN, "state": "ready", "testType":
|
|
81
|
-
|
|
105
|
+
test_status = {}
|
|
106
|
+
test_list = session.get("listTestRunsByComponent", json={"filterMap":{"serialNumber": SN, "state": "ready", "stage": "AT_QC_SITE", "testType":at_qc_tests}})
|
|
107
|
+
missing_tests = copy.deepcopy(at_qc_tests)
|
|
82
108
|
for tst in test_list:
|
|
83
109
|
ttype = tst["testType"]["code"]
|
|
84
|
-
if ttype
|
|
85
|
-
|
|
86
|
-
|
|
110
|
+
if ttype in missing_tests:
|
|
111
|
+
missing_tests.remove(ttype)
|
|
112
|
+
|
|
113
|
+
#if ttype not in core_tests:
|
|
114
|
+
# print(ttype)
|
|
115
|
+
# continue
|
|
87
116
|
|
|
88
117
|
T = session.get("getTestRun", json={"testRun": tst["id"]})
|
|
89
118
|
if T["state"] != "ready":
|
|
90
119
|
print(T)
|
|
91
120
|
|
|
121
|
+
|
|
122
|
+
if ttype in test_status:
|
|
123
|
+
if int(T["runNumber"]) > int(test_status[ttype]["runNumber"]):
|
|
124
|
+
test_status[ttype] = T
|
|
125
|
+
else:
|
|
126
|
+
test_status[ttype] = T
|
|
127
|
+
|
|
92
128
|
print("-- {} [{}]".format(T["testType"]["name"], T["runNumber"]))
|
|
93
129
|
if not T["passed"]:
|
|
94
130
|
print("\t## test FAILED")
|
|
@@ -96,12 +132,29 @@ def petalCoreTest(session, options):
|
|
|
96
132
|
for D in T["defects"]:
|
|
97
133
|
print("\t{} - {}".format(D["name"], D["description"]))
|
|
98
134
|
|
|
135
|
+
passed = True
|
|
136
|
+
for ttype, T in test_status.items():
|
|
137
|
+
if not T["passed"]:
|
|
138
|
+
passed = False
|
|
139
|
+
break
|
|
140
|
+
|
|
141
|
+
if passed:
|
|
142
|
+
print("\n--- PASSED")
|
|
143
|
+
else:
|
|
144
|
+
print("\n*** FILED")
|
|
145
|
+
|
|
146
|
+
if options.show_missing:
|
|
147
|
+
print("missing tests:")
|
|
148
|
+
for tst in missing_tests:
|
|
149
|
+
print("-- {}".format(tst))
|
|
150
|
+
|
|
99
151
|
with open("petal_ID_db_{}.json".format(suff), "w", encoding="utf-8") as fOut:
|
|
100
152
|
json.dump(petal_id_db, fOut, indent=3)
|
|
101
153
|
|
|
102
154
|
def main():
|
|
103
155
|
"""Main entry"""
|
|
104
156
|
parser = ArgumentParser()
|
|
157
|
+
parser.add_argument("--show_missing", default=False, action="store_true", help="Show missing tests.")
|
|
105
158
|
parser.add_argument("--institute", default=None, help="The petal current location")
|
|
106
159
|
parser.add_argument("--cores", dest="cores", action=RangeListAction, default=[],
|
|
107
160
|
help="Create list of cores to analyze. The list is made with numbers or ranges (ch1:ch2 or ch1:ch2:step) ")
|
|
@@ -121,4 +174,3 @@ def main():
|
|
|
121
174
|
|
|
122
175
|
if __name__ == "__main__":
|
|
123
176
|
main()
|
|
124
|
-
|
|
@@ -24,10 +24,10 @@ from petal_qc.utils.Geometry import fit_plane
|
|
|
24
24
|
from petal_qc.utils.Geometry import flatness_conhull, flatness_LSPL
|
|
25
25
|
from petal_qc.utils.Geometry import project_to_plane
|
|
26
26
|
|
|
27
|
-
from .analyze_locking_points import analyze_locking_point_data, locking_point_positions
|
|
28
|
-
from .analyze_locking_points import remove_outliers
|
|
29
|
-
from .Cluster import cluster_points
|
|
30
|
-
from .show_data_file import show_data, TOP_VIEW
|
|
27
|
+
from petal_qc.metrology.analyze_locking_points import analyze_locking_point_data, locking_point_positions
|
|
28
|
+
from petal_qc.metrology.analyze_locking_points import remove_outliers
|
|
29
|
+
from petal_qc.metrology.Cluster import cluster_points
|
|
30
|
+
from petal_qc.metrology.show_data_file import show_data, TOP_VIEW
|
|
31
31
|
|
|
32
32
|
figure_width = 14
|
|
33
33
|
|
|
@@ -132,7 +132,7 @@ def petal_flatness(orig_data, options, document=None):
|
|
|
132
132
|
|
|
133
133
|
# group points by sensors.
|
|
134
134
|
sensor_dict = {0: "R0", 10: "R1", 20: "R2", 30: "R3_0", 31: "R3_1", 40: "R4_0", 41: "R4_1", 50: "R5_0", 51: "R5_1"}
|
|
135
|
-
sensors, *_ = group_by_sensors(M, options.is_front,
|
|
135
|
+
sensors, *_ = group_by_sensors(M, options.is_front, True)
|
|
136
136
|
all_data = np.vstack(list(sensors.values()))
|
|
137
137
|
|
|
138
138
|
fig = show_data(all_data, "All points in core", view=TOP_VIEW, surf=False)
|
|
@@ -257,7 +257,7 @@ def get_iring(P, is_front):
|
|
|
257
257
|
return -1
|
|
258
258
|
|
|
259
259
|
|
|
260
|
-
def group_by_sensors(Min, is_front=True,
|
|
260
|
+
def group_by_sensors(Min, is_front=True, no_outliers=False):
|
|
261
261
|
"""Groups data points by sensors."""
|
|
262
262
|
# Now move in Y to be on the ATLAS reference
|
|
263
263
|
M = np.array(Min)
|
|
@@ -275,10 +275,11 @@ def group_by_sensors(Min, is_front=True, remove_outliers=False):
|
|
|
275
275
|
else:
|
|
276
276
|
sensors.setdefault(iring, []).append(P)
|
|
277
277
|
|
|
278
|
-
if
|
|
278
|
+
if no_outliers:
|
|
279
279
|
for key, val in sensors.items():
|
|
280
|
-
|
|
281
|
-
|
|
280
|
+
points = np.vstack(val)
|
|
281
|
+
indx = remove_outliers(points[:, 2])
|
|
282
|
+
sensors[key] = points[indx, :]
|
|
282
283
|
|
|
283
284
|
return sensors, np.array(other)
|
|
284
285
|
|
petal_qc/test/getAVStests.py
CHANGED
|
@@ -323,10 +323,10 @@ if __name__ == "__main__":
|
|
|
323
323
|
parser.add_argument("--cores", dest="cores", action=RangeListAction, default=[],
|
|
324
324
|
help="Create list of cores to analyze. The list is made with numbers or ranges (ch1:ch2 or ch1:ch2:step) ")
|
|
325
325
|
|
|
326
|
-
|
|
326
|
+
opts = parser.parse_args()
|
|
327
327
|
dlg = ITkDBlogin.ITkDBlogin()
|
|
328
328
|
session = dlg.get_client()
|
|
329
329
|
|
|
330
|
-
main(session,
|
|
330
|
+
main(session, opts)
|
|
331
331
|
|
|
332
332
|
dlg.die()
|
petal_qc/test/reportFromJSon.py
CHANGED
|
@@ -6,17 +6,43 @@ from pathlib import Path
|
|
|
6
6
|
import json
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
try:
|
|
10
|
+
import petal_qc
|
|
11
|
+
|
|
12
|
+
except ImportError:
|
|
13
|
+
cwd = Path(__file__).parent.parent
|
|
14
|
+
sys.path.append(cwd.as_posix())
|
|
15
|
+
|
|
16
|
+
from petal_qc.utils.ArgParserUtils import RangeListAction
|
|
17
|
+
from petal_qc.utils.all_files import all_files
|
|
18
|
+
|
|
19
|
+
|
|
9
20
|
|
|
10
21
|
def main(options):
|
|
11
22
|
"""main entry."""
|
|
12
23
|
petal_cores = {}
|
|
13
|
-
for
|
|
14
|
-
|
|
15
|
-
|
|
24
|
+
for fpath in options.files:
|
|
25
|
+
fnam = str(fpath)
|
|
26
|
+
if "PPC." not in fnam:
|
|
27
|
+
continue
|
|
28
|
+
|
|
29
|
+
ipos = fnam.find("PPC")
|
|
30
|
+
lpos = fnam[ipos:].find("-")
|
|
31
|
+
petal_id = fnam[ipos:ipos+lpos]
|
|
32
|
+
pid = int(petal_id[4:])
|
|
33
|
+
|
|
34
|
+
if len(options.cores)>0 and pid not in options.cores:
|
|
35
|
+
continue
|
|
36
|
+
|
|
37
|
+
with open(fpath, "r", encoding="utf-8") as fin:
|
|
16
38
|
data = json.load(fin)
|
|
17
39
|
|
|
18
40
|
if not data["passed"]:
|
|
19
|
-
|
|
41
|
+
if data["component"] is None:
|
|
42
|
+
print("Petal {} has bad Serial number".format(petal_id))
|
|
43
|
+
continue
|
|
44
|
+
|
|
45
|
+
petalId = "{}-{}".format(petal_id, data["component"])
|
|
20
46
|
if petalId not in petal_cores:
|
|
21
47
|
petal_cores[petalId] = {"FRONT": [], "BACK": []}
|
|
22
48
|
|
|
@@ -40,12 +66,15 @@ def main(options):
|
|
|
40
66
|
if __name__ == "__main__":
|
|
41
67
|
parser = argparse.ArgumentParser()
|
|
42
68
|
parser.add_argument('files', nargs='*', help="Input files")
|
|
69
|
+
parser.add_argument("--cores", dest="cores", action=RangeListAction, default=[],
|
|
70
|
+
help="Create list of cores to analyze. The list is made with numbers or ranges (ch1:ch2 or ch1:ch2:step) ")
|
|
43
71
|
opts = parser.parse_args()
|
|
44
72
|
|
|
45
|
-
from petal_qc.utils.all_files import all_files
|
|
46
73
|
|
|
74
|
+
folder = Path("/tmp/petal-metrology/results")
|
|
75
|
+
# folder = Path("~/tmp/petal-metrology/Production/Results").expanduser()
|
|
47
76
|
opts.files = []
|
|
48
|
-
for fnam in all_files(
|
|
77
|
+
for fnam in all_files(folder, "*.json"):
|
|
49
78
|
opts.files.append(fnam)
|
|
50
79
|
|
|
51
80
|
main(opts)
|
petal_qc/thermal/IRDataGetter.py
CHANGED
|
@@ -51,6 +51,7 @@ class IRDataGetter(object):
|
|
|
51
51
|
|
|
52
52
|
def fine_tune_params(self, param):
|
|
53
53
|
"""Set default values for the parameters."""
|
|
54
|
+
param.sensor_max = -5
|
|
54
55
|
return
|
|
55
56
|
|
|
56
57
|
def get_IR_data(self, image, **kargs):
|
|
@@ -298,6 +299,7 @@ class IRDataDESY(IRDataGetter):
|
|
|
298
299
|
"""Set default values for the parameters."""
|
|
299
300
|
param.distance = 16
|
|
300
301
|
param.width = 16
|
|
302
|
+
param.sensor_max = -5
|
|
301
303
|
|
|
302
304
|
def get_IR_data(self, image, **kargs):
|
|
303
305
|
"""Get the data from the image in the proper orientation.
|
petal_qc/thermal/IRPetalParam.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""Parameters needed for the thermal analysis of the petal."""
|
|
2
|
-
|
|
2
|
+
import sys
|
|
3
3
|
|
|
4
4
|
class IRPetalParam(object):
|
|
5
5
|
"""Default values for IR image handling."""
|
|
@@ -30,6 +30,9 @@ class IRPetalParam(object):
|
|
|
30
30
|
self.graphana = None # Graphana server
|
|
31
31
|
self.save_pipes = False # If true save pipe path
|
|
32
32
|
self.legend = True # if false do not plot legend
|
|
33
|
+
self.sensor_min = -sys.float_info.max # cut on lower temp for sensor contour average
|
|
34
|
+
self.sensor_max = sys.float_info.max # cut on higher temp for sensor contour average
|
|
35
|
+
|
|
33
36
|
|
|
34
37
|
if values is not None:
|
|
35
38
|
self.set_values(values)
|
|
@@ -79,4 +82,5 @@ class IRPetalParam(object):
|
|
|
79
82
|
parser.add_argument("--report", action="store_true", default=False, help="True if figures kept for the report.")
|
|
80
83
|
parser.add_argument("--save_pipes", default=False, action="store_true", help="SAve pipe path. Output is alias_pipe-i.txt")
|
|
81
84
|
parser.add_argument("--no-legend", dest="legend", action="store_false", default=True, help="Do not show the legend in plots.")
|
|
82
|
-
|
|
85
|
+
parser.add_argument("--sensor_min", dest="sensor_min", default=P.sensor_min, help="cut on lower temp for sensor contour average")
|
|
86
|
+
parser.add_argument("--sensor_max", dest="sensor_max", default=P.sensor_max, help="cut on higher temp for sensor contour average")
|
|
@@ -88,7 +88,7 @@ def analyze_IR_image(img, pipe, sensors, iside, params) -> AnalysisResult:
|
|
|
88
88
|
Savg = []
|
|
89
89
|
Sstd = []
|
|
90
90
|
for S in sensors:
|
|
91
|
-
avg, std = contours.get_average_in_contour(img, S)
|
|
91
|
+
avg, std = contours.get_average_in_contour(img, S, tmin=params.sensor_min, tmax=params.sensor_max)
|
|
92
92
|
Savg.append(avg)
|
|
93
93
|
Sstd.append(std)
|
|
94
94
|
|
petal_qc/thermal/contours.py
CHANGED
|
@@ -8,6 +8,8 @@ import random
|
|
|
8
8
|
import sys
|
|
9
9
|
|
|
10
10
|
import matplotlib.path as mplPath
|
|
11
|
+
import matplotlib.pyplot as plt
|
|
12
|
+
|
|
11
13
|
import numpy as np
|
|
12
14
|
|
|
13
15
|
from petal_qc.utils.Geometry import Point, remove_outliers_indx
|
|
@@ -258,8 +260,46 @@ def in_contour(x, y, C):
|
|
|
258
260
|
path = mplPath.Path(C)
|
|
259
261
|
return path.contains_point(x, y, C)
|
|
260
262
|
|
|
263
|
+
def show_contour_values(img, C):
|
|
264
|
+
"""Creates an image of the contour values.
|
|
265
|
+
|
|
266
|
+
Args:
|
|
267
|
+
----
|
|
268
|
+
img: The image
|
|
269
|
+
C: The contour
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
"""
|
|
273
|
+
values = []
|
|
274
|
+
path = mplPath.Path(C)
|
|
275
|
+
my, mx = img.shape
|
|
276
|
+
min_x, min_y, max_x, max_y = contour_bounds(C)
|
|
277
|
+
imin_x = int(min_x)
|
|
278
|
+
imin_y = int(min_y)
|
|
279
|
+
chst = np.zeros([int(max_y-min_y+2), int(max_x-min_x+2)])
|
|
280
|
+
for ix in range(int(min_x), int(max_x+1)):
|
|
281
|
+
if ix < 0 or ix >= mx:
|
|
282
|
+
continue
|
|
283
|
+
|
|
284
|
+
for iy in range(int(min_y), int(max_y)+1):
|
|
285
|
+
if iy < 0 or iy >= my:
|
|
286
|
+
continue
|
|
287
|
+
|
|
288
|
+
if path.contains_point([ix, iy]):
|
|
289
|
+
chst[iy-imin_y, ix-imin_x] = img[iy, ix]
|
|
290
|
+
values.append(img[iy, ix])
|
|
291
|
+
|
|
292
|
+
values = np.array(values)
|
|
293
|
+
mean = np.mean(values)
|
|
294
|
+
std = np.std(values)
|
|
261
295
|
|
|
262
|
-
|
|
296
|
+
fig, ax = plt.subplots(nrows=1,ncols=2)
|
|
297
|
+
ax[0].hist(values, 25, range=(mean-3*std, mean+3*std))
|
|
298
|
+
pcm = ax[1].imshow(chst, origin='lower', vmin=mean-3*std, vmax=mean+3*std)
|
|
299
|
+
fig.colorbar(pcm, ax=ax[1])
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def get_average_in_contour(img, C, tmin=sys.float_info.min, tmax=sys.float_info.max, remove_outliers=None):
|
|
263
303
|
"""Gets average and std of points within contour.
|
|
264
304
|
|
|
265
305
|
We are assuming here that coordinates are integers, ie,
|
|
@@ -269,7 +309,8 @@ def get_average_in_contour(img, C, remove_outliers=None):
|
|
|
269
309
|
----
|
|
270
310
|
img: The image
|
|
271
311
|
C: The contour
|
|
272
|
-
|
|
312
|
+
tmin, tmax: only values in range [tmin, tmax] will be considered
|
|
313
|
+
remove_outliers: If an int,
|
|
273
314
|
|
|
274
315
|
Returns
|
|
275
316
|
-------
|
|
@@ -289,7 +330,9 @@ def get_average_in_contour(img, C, remove_outliers=None):
|
|
|
289
330
|
continue
|
|
290
331
|
|
|
291
332
|
if path.contains_point([ix, iy]):
|
|
292
|
-
|
|
333
|
+
val = img[iy, ix]
|
|
334
|
+
if val > tmin and val < tmax:
|
|
335
|
+
values.append(val)
|
|
293
336
|
|
|
294
337
|
values = np.array(values)
|
|
295
338
|
if remove_outliers is not None and isinstance(remove_outliers, (int, float)):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: petal_qc
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.21
|
|
4
4
|
Summary: A collection of scripts for Petal CORE QC.
|
|
5
5
|
Author-email: Carlos Lacasta <carlos.lacasta@cern.ch>
|
|
6
6
|
Project-URL: Homepage, https://gitlab.cern.ch/atlas-itk/sw/db/itk-pdb-gtk-gui-utils
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
petal_qc/PetalReceptionTests.py,sha256=
|
|
2
|
-
petal_qc/__init__.py,sha256=
|
|
1
|
+
petal_qc/PetalReceptionTests.py,sha256=xFFqh_TYVXOWP0H1Q4I8V8sP8p8_w5tCCrhtENN7yvM,10825
|
|
2
|
+
petal_qc/__init__.py,sha256=J6xF3JrSVAdwmg2ezs6nGmQ_uRs4vyV86I9VNZOC3kU,1595
|
|
3
3
|
petal_qc/dashBoard.py,sha256=U_UHNMca3H2ogD4a0Vpe4ZVUKEv2-xmGZQEZ9_aH0E4,4034
|
|
4
|
-
petal_qc/getPetalCoreTestSummary.py,sha256=
|
|
4
|
+
petal_qc/getPetalCoreTestSummary.py,sha256=obHSMwdFc6Y51TaFxb1Gj5s0mfgVWZljUTz83Lt8T5w,5130
|
|
5
5
|
petal_qc/BTreport/CheckBTtests.py,sha256=CoKTnW_7gbL42rVaBy9FnH1SEYifmgg1P5Iy253vDFk,9855
|
|
6
6
|
petal_qc/BTreport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
petal_qc/BTreport/bustapeReport.py,sha256=M0EZQEh8G-65p6-gCOyZ0WlvnRbzQHXPwAWta9ZExnQ,6907
|
|
@@ -21,7 +21,7 @@ petal_qc/metrology/data2csv.py,sha256=2ttMSmfGLPIaOqZGima2dH6sdnSRAFTHlEbSOfW5eb
|
|
|
21
21
|
petal_qc/metrology/do_Metrology.py,sha256=wA3fKJrdDLGYd0lEi8uSP9uRwQeS59nX6F4VtNnm9LM,4356
|
|
22
22
|
petal_qc/metrology/flatness4nigel.py,sha256=SUHwn6pCEUWQV_62-_9-VKrmUdL4gVQcSA3aTtYq958,4071
|
|
23
23
|
petal_qc/metrology/gtkutils.py,sha256=1pOTxiE2EZR9zNNNT5cOetga_4NG9DzLaqQPI4c1EzE,3372
|
|
24
|
-
petal_qc/metrology/petal_flatness.py,sha256=
|
|
24
|
+
petal_qc/metrology/petal_flatness.py,sha256=f8UqAmwbSkOngFbwekeGq6cX5flSkd7JNhCYRIn39LE,10695
|
|
25
25
|
petal_qc/metrology/readAVSdata.py,sha256=6GRUac9b3iOoVoGfWr6rsNj1smsw9aT0tu5wuNuumAE,25615
|
|
26
26
|
petal_qc/metrology/show_data_file.py,sha256=yZPcmMy-1EWWySiBBx0hNB3tPVh19bTr0PDaXSyIF4c,4057
|
|
27
27
|
petal_qc/metrology/testSummary.py,sha256=0BhcEd1BPz2Mbonzi8nyZOzNSzpUqowBFNl5cVutqsk,994
|
|
@@ -36,10 +36,10 @@ petal_qc/test/createMetrologyTable.py,sha256=Dh9Mwab5geyojigVCS5mKba1EJU-4K1-ELD
|
|
|
36
36
|
petal_qc/test/desyModuleBow.py,sha256=4RgDIVEMqzlGUVqKCjji95_JzfXtcgjK4kefKrVH9eY,3602
|
|
37
37
|
petal_qc/test/findRawData.py,sha256=8wqvPILjfZZ0CKkDhOa_tcsYMwNwcKOLyaEoWfISBQY,2872
|
|
38
38
|
petal_qc/test/getAVSjson.py,sha256=o8AYtyr7Vnp-enznmQ-NNiivZipmxtoVrmsfnRCl0X4,977
|
|
39
|
-
petal_qc/test/getAVStests.py,sha256=
|
|
39
|
+
petal_qc/test/getAVStests.py,sha256=MsphZFxiPLCo6gf1ZTQ5Sy415rF35NgvF13OGagunV0,10308
|
|
40
40
|
petal_qc/test/listPetalCoreComponents.py,sha256=7U9wokRkgeZdYZKeZdAadA32BlhVK6okInuh94hmj24,2502
|
|
41
41
|
petal_qc/test/prepareDESYfiles.py,sha256=uRir2fv0oGqB6hKnIqRltDW-oLz1tR2SDvVkMVxCfKI,4106
|
|
42
|
-
petal_qc/test/reportFromJSon.py,sha256=
|
|
42
|
+
petal_qc/test/reportFromJSon.py,sha256=WKb6M_TDvQV7XzaJgElQNORXBiu31zJNp45ulNSl7kk,2367
|
|
43
43
|
petal_qc/test/test_Graphana.py,sha256=4wADxS_ObG9n4vsCvD1GwPQnx8bFUiUOS6ZwK83wTl8,1082
|
|
44
44
|
petal_qc/test/test_coreThermal.py,sha256=YRPK3DGG7Tz66K4Kka3euXgUDzW_JlIqSYicMBhb96E,1516
|
|
45
45
|
petal_qc/thermal/CSVImage.py,sha256=Vt2kYmUsZWkQvxcF8fDda3HO1Rb29kPQHnEoHFCqWYo,2038
|
|
@@ -47,15 +47,15 @@ petal_qc/thermal/DESYdata.py,sha256=YAwxhnmA89uH1vZ_BjDo0VLATTGRngoBSFzYfLSJbZU,
|
|
|
47
47
|
petal_qc/thermal/DebugPlot.py,sha256=OmREFwNDAKgoObDmcgHrB4d8m3bf2znfsKVGsb5rBGQ,2119
|
|
48
48
|
petal_qc/thermal/IRBFile.py,sha256=_no8iUyuSQ41j34o3LVzUCjMYoviwjz02tsWvFsTUzA,23462
|
|
49
49
|
petal_qc/thermal/IRCore.py,sha256=sidf7HtrzEUcllv0E_o1Hks-2_2dl4Og_LWcwgPNRcE,3062
|
|
50
|
-
petal_qc/thermal/IRDataGetter.py,sha256=
|
|
50
|
+
petal_qc/thermal/IRDataGetter.py,sha256=px9nFTuDPuwaSkhfA3wT52_3UhwVdD1BtB494poqIp4,11639
|
|
51
51
|
petal_qc/thermal/IRPetal.py,sha256=hVOD0VAKTA2xvNXbZ-TXAYHNlihNWsUkI2i9IEwQhZk,40887
|
|
52
|
-
petal_qc/thermal/IRPetalParam.py,sha256=
|
|
52
|
+
petal_qc/thermal/IRPetalParam.py,sha256=u-1tUxjWnLYr7mbdKEtnMssJep-AS7e7HCaUGwu99C8,4682
|
|
53
53
|
petal_qc/thermal/PetalColorMaps.py,sha256=6CvJHzRdojLHu3BROYSekHw8g_BJ1lJ_edyhovTIydU,3831
|
|
54
|
-
petal_qc/thermal/Petal_IR_Analysis.py,sha256=
|
|
54
|
+
petal_qc/thermal/Petal_IR_Analysis.py,sha256=BrTii0GZ6KsNM65JUpfRNgOjsR1b2vFJUf0AyskTe3g,3998
|
|
55
55
|
petal_qc/thermal/PipeFit.py,sha256=8nEjpZC1mWh4-bhXzwXfjO8WkC_6hFYX0XXPjTHwNUw,18345
|
|
56
56
|
petal_qc/thermal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
57
|
petal_qc/thermal/analyze_IRCore.py,sha256=-MsKGJR-5pJV93ipLau0FHQeconLhMPDuLQIT9LMWsU,21115
|
|
58
|
-
petal_qc/thermal/contours.py,sha256=
|
|
58
|
+
petal_qc/thermal/contours.py,sha256=l8eZOvOhJ50cpJZ2ZPOZ-yjsg3ByQAZ0BPUajag0MwU,9862
|
|
59
59
|
petal_qc/thermal/coreThermal.py,sha256=lBPyBm3Fo5uXBw6AIpzTY4Ku238Gr9lwm36Iihfbqp0,16203
|
|
60
60
|
petal_qc/thermal/create_IRCore.py,sha256=s3X-NBc6KdkqOG7kAcG5ldyTRSuommxIruzMFMu8CjQ,9183
|
|
61
61
|
petal_qc/thermal/create_core_report.py,sha256=32F7u7ffnLmGX5J_YP2oa8O_pI0euh9z3p0CTpA3-WM,6135
|
|
@@ -72,8 +72,8 @@ petal_qc/utils/docx_utils.py,sha256=zVmSKHDVE8cUwbXxqyPtgS0z62VCFya1DWklOpO1rCQ,
|
|
|
72
72
|
petal_qc/utils/fit_utils.py,sha256=3KUGWpBMV-bVDkQHWBigXot8chOpjAVBJ5H5b5dbdjk,5349
|
|
73
73
|
petal_qc/utils/readGraphana.py,sha256=YVOztJC3q3P7F0I9Ggeiu6Mv9rZLKgj3clkLCU7k4i4,1918
|
|
74
74
|
petal_qc/utils/utils.py,sha256=CqCsNIcEg6FQb3DN70tmqeLVLlQqsRfDzhfGevlnfBc,4035
|
|
75
|
-
petal_qc-0.0.
|
|
76
|
-
petal_qc-0.0.
|
|
77
|
-
petal_qc-0.0.
|
|
78
|
-
petal_qc-0.0.
|
|
79
|
-
petal_qc-0.0.
|
|
75
|
+
petal_qc-0.0.21.dist-info/METADATA,sha256=DcO69dmOdXq0CtsnCIJSVpdkLy5lwtZKRKktWBxCv2k,953
|
|
76
|
+
petal_qc-0.0.21.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
|
77
|
+
petal_qc-0.0.21.dist-info/entry_points.txt,sha256=YPrZOsRBRsiKNDvsnbug0-Khj7DcN_Sdpq-tB_XjykI,505
|
|
78
|
+
petal_qc-0.0.21.dist-info/top_level.txt,sha256=CCo1Xe6kLS79PruhsB6bk2CuL9VFtNdNpgJjYUs4jk4,9
|
|
79
|
+
petal_qc-0.0.21.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|