petal-qc 0.0.20__py3-none-any.whl → 0.0.22__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 +6 -1
- petal_qc/getPetalCoreTestSummary.py +69 -9
- petal_qc/metrology/PetalMetrology.py +21 -9
- petal_qc/metrology/analyze_locking_points.py +14 -3
- petal_qc/metrology/compare_Cores.py +15 -2
- petal_qc/metrology/coreMetrology.py +16 -26
- petal_qc/metrology/test_paralelism.py +2 -2
- petal_qc/metrology/uploadPetalInformation.py +20 -2
- petal_qc/readTemplateTable.py +313 -0
- petal_qc/test/analyzeMetrologyTable.py +158 -29
- petal_qc/test/getAVStests.py +2 -2
- petal_qc/test/reportFromJSon.py +9 -7
- petal_qc/test/testMitutoyo.py +10 -0
- petal_qc/thermal/IRDataGetter.py +2 -0
- petal_qc/thermal/IRPetal.py +20 -6
- petal_qc/thermal/IRPetalParam.py +6 -2
- petal_qc/thermal/Petal_IR_Analysis.py +1 -1
- petal_qc/thermal/PipeFit.py +11 -8
- petal_qc/thermal/PipeIterFit.py +74 -0
- petal_qc/thermal/contours.py +46 -3
- petal_qc/thermal/create_IRCore.py +8 -3
- petal_qc/uploadXrays.py +86 -0
- {petal_qc-0.0.20.dist-info → petal_qc-0.0.22.dist-info}/METADATA +1 -1
- {petal_qc-0.0.20.dist-info → petal_qc-0.0.22.dist-info}/RECORD +28 -24
- {petal_qc-0.0.20.dist-info → petal_qc-0.0.22.dist-info}/WHEEL +1 -1
- {petal_qc-0.0.20.dist-info → petal_qc-0.0.22.dist-info}/entry_points.txt +1 -0
- {petal_qc-0.0.20.dist-info → petal_qc-0.0.22.dist-info}/top_level.txt +0 -0
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/PipeFit.py
CHANGED
|
@@ -357,7 +357,7 @@ class PipeFit(object):
|
|
|
357
357
|
dst, P = contours.find_closest_point(X[0], X[1], self.cpipe)
|
|
358
358
|
D[i, :] = P - X
|
|
359
359
|
ddd[i] = dst
|
|
360
|
-
W = 1 +
|
|
360
|
+
W = 1 + 2*(y_max - X[1])/height
|
|
361
361
|
weights[i] = W
|
|
362
362
|
sum_weights += W
|
|
363
363
|
|
|
@@ -369,7 +369,7 @@ class PipeFit(object):
|
|
|
369
369
|
res = np.dot(ddd, weights)/sum_weights
|
|
370
370
|
|
|
371
371
|
if self.debug:
|
|
372
|
-
dbg_ax.
|
|
372
|
+
dbg_ax.clear()
|
|
373
373
|
dbg_ax.plot(self.cpipe[:, 0], self.cpipe[:, 1])
|
|
374
374
|
dbg_ax.plot(out[:, 0], out[:, 1])
|
|
375
375
|
dbg_ax.set_title("area {:3f} dist {:.3f}".format(real_area, np.sum(ddd)/npts))
|
|
@@ -420,7 +420,7 @@ class PipeFit(object):
|
|
|
420
420
|
|
|
421
421
|
return res
|
|
422
422
|
|
|
423
|
-
def fit(self, data, M0=None, factor=1.0):
|
|
423
|
+
def fit(self, data, M0=None, factor=1.0, simplify=True):
|
|
424
424
|
"""Do the fit.
|
|
425
425
|
|
|
426
426
|
Args:
|
|
@@ -451,12 +451,15 @@ class PipeFit(object):
|
|
|
451
451
|
print("\n** Initial guess")
|
|
452
452
|
self.print_transform(M)
|
|
453
453
|
else:
|
|
454
|
-
M = M0
|
|
454
|
+
M = M0[0:5]
|
|
455
455
|
|
|
456
456
|
self.core_center, self.core_band = self.get_data_center(data)
|
|
457
457
|
|
|
458
|
-
|
|
459
|
-
|
|
458
|
+
if simplify:
|
|
459
|
+
self.data = contours.contour_simplify(data, 1.25*factor)
|
|
460
|
+
else:
|
|
461
|
+
self.data = np.array(data)
|
|
462
|
+
|
|
460
463
|
# self.data = data
|
|
461
464
|
verbose = 0
|
|
462
465
|
if self.debug:
|
|
@@ -482,9 +485,9 @@ class PipeFit(object):
|
|
|
482
485
|
self.R = M
|
|
483
486
|
return M
|
|
484
487
|
|
|
485
|
-
def fit_ex(self, data, limit=5e6, factor=1):
|
|
488
|
+
def fit_ex(self, data, M0=None, limit=5e6, factor=1, simplify=True):
|
|
486
489
|
"""Does the regular fit and tries to correct."""
|
|
487
|
-
R = self.fit(data, factor=factor)
|
|
490
|
+
R = self.fit(data, factor=factor, M0=M0, simplify=simplify)
|
|
488
491
|
|
|
489
492
|
# Check for an offset...
|
|
490
493
|
if self.res.cost > limit:
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
import numpy as np
|
|
4
|
+
import matplotlib.pyplot as plt
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
cwd = Path(__file__).parent
|
|
9
|
+
if cwd.exists():
|
|
10
|
+
sys.path.insert(0, cwd.as_posix())
|
|
11
|
+
|
|
12
|
+
from petal_qc.thermal import PipeFit, contours
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class PipeIterFit:
|
|
16
|
+
"""makes an iterative fit removing outliers in each iteration."""
|
|
17
|
+
|
|
18
|
+
def __init__(self, data):
|
|
19
|
+
"""Initialize class."""
|
|
20
|
+
self.data = data
|
|
21
|
+
ptype = PipeFit.PipeFit.guess_pipe_type(data)
|
|
22
|
+
self.PF = PipeFit.PipeFit(ptype)
|
|
23
|
+
|
|
24
|
+
def remove_outsiders(self, data, thrs):
|
|
25
|
+
"""Removes points which are further than thrs from the fit."""
|
|
26
|
+
D = np.zeros(len(data))
|
|
27
|
+
out = self.PF.transform_data(data, self.PF.R)
|
|
28
|
+
i = 0
|
|
29
|
+
for x, y in out:
|
|
30
|
+
dst, P = contours.find_closest_point(x, y, self.PF.pipe)
|
|
31
|
+
D[i] = dst
|
|
32
|
+
i += 1
|
|
33
|
+
|
|
34
|
+
indx = np.where(D < thrs)[0]
|
|
35
|
+
return np.array(data[indx, :])
|
|
36
|
+
|
|
37
|
+
def fit(self, threshold=20, factor=1.0):
|
|
38
|
+
total_data = self.data
|
|
39
|
+
data_size = len(total_data)
|
|
40
|
+
|
|
41
|
+
fig, ax = plt.subplots(1, 1, tight_layout=True)
|
|
42
|
+
|
|
43
|
+
M0 = self.PF.fit_ex(total_data, factor=factor)
|
|
44
|
+
sample_data = self.remove_outsiders(self.PF.data, threshold)
|
|
45
|
+
last_size = len(sample_data)
|
|
46
|
+
|
|
47
|
+
# Adaptively determining the number of iterations
|
|
48
|
+
while True:
|
|
49
|
+
M0 = self.PF.fit_ex(sample_data, M0=M0, factor=factor, simplify=False)
|
|
50
|
+
|
|
51
|
+
out = self.PF.transform_data(self.PF.data, M0)
|
|
52
|
+
D = []
|
|
53
|
+
for x, y in out:
|
|
54
|
+
dst, P = contours.find_closest_point(x, y, self.PF.pipe)
|
|
55
|
+
D.append(dst)
|
|
56
|
+
|
|
57
|
+
ax.clear()
|
|
58
|
+
ax.hist(D)
|
|
59
|
+
plt.draw()
|
|
60
|
+
plt.pause(0.0001)
|
|
61
|
+
self.PF.plot()
|
|
62
|
+
|
|
63
|
+
sample_data = self.remove_outsiders(self.PF.data, 20)
|
|
64
|
+
sample_size = len(sample_data)
|
|
65
|
+
if sample_size == last_size:
|
|
66
|
+
break
|
|
67
|
+
|
|
68
|
+
last_size = sample_size
|
|
69
|
+
|
|
70
|
+
self.PF.plot()
|
|
71
|
+
return M0
|
|
72
|
+
|
|
73
|
+
def plot(self):
|
|
74
|
+
self.PF.plot()
|
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)):
|
|
@@ -21,7 +21,7 @@ from petal_qc.thermal import IRBFile
|
|
|
21
21
|
from petal_qc.thermal import IRCore
|
|
22
22
|
from petal_qc.thermal import IRPetal
|
|
23
23
|
from petal_qc.thermal import Petal_IR_Analysis
|
|
24
|
-
from petal_qc.thermal import PipeFit
|
|
24
|
+
from petal_qc.thermal import PipeFit, PipeIterFit
|
|
25
25
|
from petal_qc.thermal.PetalColorMaps import HighContrast
|
|
26
26
|
from petal_qc.thermal.IRDataGetter import IRDataGetter
|
|
27
27
|
from petal_qc.thermal.IRPetalParam import IRPetalParam
|
|
@@ -182,8 +182,13 @@ def create_IR_core(options):
|
|
|
182
182
|
ofile = output_folder(options.folder, "{}_pipe_{}.txt".format(prfx, pipe_type))
|
|
183
183
|
np.savetxt(ofile, pipes[i])
|
|
184
184
|
|
|
185
|
-
PF = PipeFit.PipeFit(pipe_type)
|
|
186
|
-
R = PF.fit_ex(pipes[i], factor=getter.factor)
|
|
185
|
+
#PF = PipeFit.PipeFit(pipe_type)
|
|
186
|
+
#R = PF.fit_ex(pipes[i], factor=getter.factor)
|
|
187
|
+
|
|
188
|
+
iPF = PipeIterFit.PipeIterFit(pipes[i])
|
|
189
|
+
PF = iPF.PF
|
|
190
|
+
R = iPF.fit(factor=getter.factor, threshold=12*getter.factor)
|
|
191
|
+
|
|
187
192
|
if options.debug or options.report:
|
|
188
193
|
_X = all_3d_points[i][:, 0]
|
|
189
194
|
_Y = all_3d_points[i][:, 1]
|
petal_qc/uploadXrays.py
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Test dashboard."""
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
import copy
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from argparse import ArgumentParser
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
import itkdb_gtk
|
|
11
|
+
|
|
12
|
+
except ImportError:
|
|
13
|
+
cwd = Path(__file__).parent.parent
|
|
14
|
+
sys.path.append(cwd.as_posix())
|
|
15
|
+
import itkdb_gtk
|
|
16
|
+
|
|
17
|
+
from itkdb_gtk import ITkDBlogin, ITkDButils, UploadTest
|
|
18
|
+
from petal_qc.utils.ArgParserUtils import RangeListAction
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
HOME=os.getenv("HOME")
|
|
22
|
+
cloud=Path("{}/Nextcloud/ITk/5-Petal_cores".format(HOME))
|
|
23
|
+
|
|
24
|
+
def uploadXrays(session, options):
|
|
25
|
+
"""Upload Xray tests."""
|
|
26
|
+
if len(options.cores) == 0:
|
|
27
|
+
print("I need a list of cores.")
|
|
28
|
+
return
|
|
29
|
+
|
|
30
|
+
defaults = {
|
|
31
|
+
"institution": "IFIC",
|
|
32
|
+
"runNumber": "1",
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
dto = ITkDButils.get_test_skeleton(session, "CORE_PETAL", "XRAYIMAGING", defaults)
|
|
36
|
+
dto["properties"]["OPERATOR"]="Nico"
|
|
37
|
+
dto["properties"]["MACHINEID"]="Xray"
|
|
38
|
+
|
|
39
|
+
for core in options.cores:
|
|
40
|
+
petal_id = "PPC.{:03d}".format(core)
|
|
41
|
+
try:
|
|
42
|
+
obj = ITkDButils.get_DB_component(session, petal_id)
|
|
43
|
+
SN = obj["serialNumber"]
|
|
44
|
+
|
|
45
|
+
except Exception as E:
|
|
46
|
+
print("Could not find {} in DB:\n{}".format(petal_id, E))
|
|
47
|
+
continue
|
|
48
|
+
|
|
49
|
+
values = copy.deepcopy(dto)
|
|
50
|
+
print("Petal {}".format(petal_id))
|
|
51
|
+
values["component"] = SN
|
|
52
|
+
|
|
53
|
+
image = cloud / petal_id / "Rx_{}.png".format(petal_id)
|
|
54
|
+
if not image.exists():
|
|
55
|
+
print("Xray image does not esxist.\n\t{}".format(image))
|
|
56
|
+
continue
|
|
57
|
+
|
|
58
|
+
A = ITkDButils.Attachment(path=image.as_posix(), title=image.name, desc="X-ray image")
|
|
59
|
+
values["results"]["IMAGELINK"] = image.name
|
|
60
|
+
uploadW = UploadTest.UploadTest(session, values, [A, ])
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def main():
|
|
65
|
+
"""Main entry"""
|
|
66
|
+
parser = ArgumentParser()
|
|
67
|
+
parser.add_argument("--cores", dest="cores", action=RangeListAction, default=[],
|
|
68
|
+
help="Create list of cores to analyze. The list is made with numbers or ranges (ch1:ch2 or ch1:ch2:step) ")
|
|
69
|
+
options = parser.parse_args()
|
|
70
|
+
|
|
71
|
+
# ITk_PB authentication
|
|
72
|
+
dlg = ITkDBlogin.ITkDBlogin()
|
|
73
|
+
session = dlg.get_client()
|
|
74
|
+
|
|
75
|
+
try:
|
|
76
|
+
uploadXrays(session, options)
|
|
77
|
+
|
|
78
|
+
except Exception as E:
|
|
79
|
+
print(E)
|
|
80
|
+
|
|
81
|
+
dlg.die()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
if __name__ == "__main__":
|
|
86
|
+
main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: petal_qc
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.22
|
|
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,22 +1,24 @@
|
|
|
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=ltg8iE7hMGTw0UPsUVJo4An7tiOxiDvom962DOfjNOs,1736
|
|
3
3
|
petal_qc/dashBoard.py,sha256=U_UHNMca3H2ogD4a0Vpe4ZVUKEv2-xmGZQEZ9_aH0E4,4034
|
|
4
|
-
petal_qc/getPetalCoreTestSummary.py,sha256=
|
|
4
|
+
petal_qc/getPetalCoreTestSummary.py,sha256=OnvX5zFfyfnLhmPy84kZq2XkfOH5DaDrYSXpiwrmln8,5436
|
|
5
|
+
petal_qc/readTemplateTable.py,sha256=zh6j_g_AYKCJ4ajmGEoy9KI9giL7tBhZdpbUE8s2b7I,8405
|
|
6
|
+
petal_qc/uploadXrays.py,sha256=j_iKGjxWAKLGTFVXivwdnhsleTuYcR4zvuSWxwzCGKU,2289
|
|
5
7
|
petal_qc/BTreport/CheckBTtests.py,sha256=CoKTnW_7gbL42rVaBy9FnH1SEYifmgg1P5Iy253vDFk,9855
|
|
6
8
|
petal_qc/BTreport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
9
|
petal_qc/BTreport/bustapeReport.py,sha256=M0EZQEh8G-65p6-gCOyZ0WlvnRbzQHXPwAWta9ZExnQ,6907
|
|
8
10
|
petal_qc/metrology/Cluster.py,sha256=UtZ5q1EFb8f3qC0hEYBbhRg2pPbW_28aJX2EEMu00Ho,2105
|
|
9
11
|
petal_qc/metrology/DataFile.py,sha256=PbFqy3-WSj69epV5EjhHc1GKhA8I74FmJYOXUjN0V20,1367
|
|
10
|
-
petal_qc/metrology/PetalMetrology.py,sha256=
|
|
12
|
+
petal_qc/metrology/PetalMetrology.py,sha256=zTJ5xSGz5d9flDvnQpQnq5cWvNMP5DXJkhDw_SmLFEU,12748
|
|
11
13
|
petal_qc/metrology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
14
|
petal_qc/metrology/all2csv.py,sha256=KTgEGaediylwkGN7gyWyQqUjU0f9FOa3xF4z1W38EcU,1569
|
|
13
|
-
petal_qc/metrology/analyze_locking_points.py,sha256=
|
|
15
|
+
petal_qc/metrology/analyze_locking_points.py,sha256=1uUN4dfBDk9NopQxyLePJ8r_qJHcsxogB1M4z7FZh6g,20912
|
|
14
16
|
petal_qc/metrology/cold_noise.py,sha256=PuTaQ73WrQCJdE9ezS4UFmA3atwCuvM0ZsUOYu1ZIBw,3106
|
|
15
|
-
petal_qc/metrology/compare_Cores.py,sha256=
|
|
17
|
+
petal_qc/metrology/compare_Cores.py,sha256=7t6RJ2QiJl-zmNG886jSLswS8rhD4zgipZlxjz7oTbM,9931
|
|
16
18
|
petal_qc/metrology/comparisonTable.py,sha256=6Zmh-x0ahs28ZJQuHMrIiRcblUmTN1_-1otFSRNMPds,1743
|
|
17
19
|
petal_qc/metrology/convert_mitutoyo.py,sha256=tpnB_fHBR8PpJeb7_q9foYKGNDRhJzxHNemmpfbSt8E,5650
|
|
18
20
|
petal_qc/metrology/convert_smartscope.py,sha256=0vAEYn7ec4qTnLfjphj1QA6tK3vZsXyF6nYYj3jE5Yc,6174
|
|
19
|
-
petal_qc/metrology/coreMetrology.py,sha256=
|
|
21
|
+
petal_qc/metrology/coreMetrology.py,sha256=Dg5aVLOQzdl1IK15iugtnsqKks1ydePelkWFuFH5MUc,12962
|
|
20
22
|
petal_qc/metrology/data2csv.py,sha256=2ttMSmfGLPIaOqZGima2dH6sdnSRAFTHlEbSOfW5ebA,1809
|
|
21
23
|
petal_qc/metrology/do_Metrology.py,sha256=wA3fKJrdDLGYd0lEi8uSP9uRwQeS59nX6F4VtNnm9LM,4356
|
|
22
24
|
petal_qc/metrology/flatness4nigel.py,sha256=SUHwn6pCEUWQV_62-_9-VKrmUdL4gVQcSA3aTtYq958,4071
|
|
@@ -25,9 +27,9 @@ petal_qc/metrology/petal_flatness.py,sha256=f8UqAmwbSkOngFbwekeGq6cX5flSkd7JNhCY
|
|
|
25
27
|
petal_qc/metrology/readAVSdata.py,sha256=6GRUac9b3iOoVoGfWr6rsNj1smsw9aT0tu5wuNuumAE,25615
|
|
26
28
|
petal_qc/metrology/show_data_file.py,sha256=yZPcmMy-1EWWySiBBx0hNB3tPVh19bTr0PDaXSyIF4c,4057
|
|
27
29
|
petal_qc/metrology/testSummary.py,sha256=0BhcEd1BPz2Mbonzi8nyZOzNSzpUqowBFNl5cVutqsk,994
|
|
28
|
-
petal_qc/metrology/test_paralelism.py,sha256=
|
|
29
|
-
petal_qc/metrology/uploadPetalInformation.py,sha256=
|
|
30
|
-
petal_qc/test/analyzeMetrologyTable.py,sha256=
|
|
30
|
+
petal_qc/metrology/test_paralelism.py,sha256=Ij9WlHxyG8It3JqdCVVIWPeuv1OjBGeOsLkD44V2h5A,2024
|
|
31
|
+
petal_qc/metrology/uploadPetalInformation.py,sha256=EM2ThfXxVbZYXMxUuzTcKeGnh3SjOHQUzk09AwK80hI,27560
|
|
32
|
+
petal_qc/test/analyzeMetrologyTable.py,sha256=hYyDGm7yns5i5SS6--DZfDX4bXbCEvilYPKk1Nm54e0,6759
|
|
31
33
|
petal_qc/test/checkAVStests.py,sha256=0xAJLazfkgfQ0ouc17fivaj69OXTiS9sali0DhH-jTs,4814
|
|
32
34
|
petal_qc/test/checkCoreShipments.py,sha256=d9W_uE0tMdfJGRuiiTOGyIW60SIj08QKWjd3Y8aVBi8,1554
|
|
33
35
|
petal_qc/test/compare_golden.py,sha256=lG1rtYLw_PwKWrLk0VVdbnRhi7Ytu78q7PGWcYptM_8,1171
|
|
@@ -36,10 +38,11 @@ petal_qc/test/createMetrologyTable.py,sha256=Dh9Mwab5geyojigVCS5mKba1EJU-4K1-ELD
|
|
|
36
38
|
petal_qc/test/desyModuleBow.py,sha256=4RgDIVEMqzlGUVqKCjji95_JzfXtcgjK4kefKrVH9eY,3602
|
|
37
39
|
petal_qc/test/findRawData.py,sha256=8wqvPILjfZZ0CKkDhOa_tcsYMwNwcKOLyaEoWfISBQY,2872
|
|
38
40
|
petal_qc/test/getAVSjson.py,sha256=o8AYtyr7Vnp-enznmQ-NNiivZipmxtoVrmsfnRCl0X4,977
|
|
39
|
-
petal_qc/test/getAVStests.py,sha256=
|
|
41
|
+
petal_qc/test/getAVStests.py,sha256=MsphZFxiPLCo6gf1ZTQ5Sy415rF35NgvF13OGagunV0,10308
|
|
40
42
|
petal_qc/test/listPetalCoreComponents.py,sha256=7U9wokRkgeZdYZKeZdAadA32BlhVK6okInuh94hmj24,2502
|
|
41
43
|
petal_qc/test/prepareDESYfiles.py,sha256=uRir2fv0oGqB6hKnIqRltDW-oLz1tR2SDvVkMVxCfKI,4106
|
|
42
|
-
petal_qc/test/reportFromJSon.py,sha256=
|
|
44
|
+
petal_qc/test/reportFromJSon.py,sha256=raF83IArZusR5kh7Lg-Q_3SoHJuM5hPpnnLYgrKBHlQ,2366
|
|
45
|
+
petal_qc/test/testMitutoyo.py,sha256=xN0H13rmcpGbXDLBjccNL8ybdevu-j_gMnracY29ONg,228
|
|
43
46
|
petal_qc/test/test_Graphana.py,sha256=4wADxS_ObG9n4vsCvD1GwPQnx8bFUiUOS6ZwK83wTl8,1082
|
|
44
47
|
petal_qc/test/test_coreThermal.py,sha256=YRPK3DGG7Tz66K4Kka3euXgUDzW_JlIqSYicMBhb96E,1516
|
|
45
48
|
petal_qc/thermal/CSVImage.py,sha256=Vt2kYmUsZWkQvxcF8fDda3HO1Rb29kPQHnEoHFCqWYo,2038
|
|
@@ -47,17 +50,18 @@ petal_qc/thermal/DESYdata.py,sha256=YAwxhnmA89uH1vZ_BjDo0VLATTGRngoBSFzYfLSJbZU,
|
|
|
47
50
|
petal_qc/thermal/DebugPlot.py,sha256=OmREFwNDAKgoObDmcgHrB4d8m3bf2znfsKVGsb5rBGQ,2119
|
|
48
51
|
petal_qc/thermal/IRBFile.py,sha256=_no8iUyuSQ41j34o3LVzUCjMYoviwjz02tsWvFsTUzA,23462
|
|
49
52
|
petal_qc/thermal/IRCore.py,sha256=sidf7HtrzEUcllv0E_o1Hks-2_2dl4Og_LWcwgPNRcE,3062
|
|
50
|
-
petal_qc/thermal/IRDataGetter.py,sha256=
|
|
51
|
-
petal_qc/thermal/IRPetal.py,sha256=
|
|
52
|
-
petal_qc/thermal/IRPetalParam.py,sha256=
|
|
53
|
+
petal_qc/thermal/IRDataGetter.py,sha256=px9nFTuDPuwaSkhfA3wT52_3UhwVdD1BtB494poqIp4,11639
|
|
54
|
+
petal_qc/thermal/IRPetal.py,sha256=Im3Xa1ADAzuCKLEzl9i40qOMvfLCGJ8dopA2jGVT7zU,41638
|
|
55
|
+
petal_qc/thermal/IRPetalParam.py,sha256=u-1tUxjWnLYr7mbdKEtnMssJep-AS7e7HCaUGwu99C8,4682
|
|
53
56
|
petal_qc/thermal/PetalColorMaps.py,sha256=6CvJHzRdojLHu3BROYSekHw8g_BJ1lJ_edyhovTIydU,3831
|
|
54
|
-
petal_qc/thermal/Petal_IR_Analysis.py,sha256=
|
|
55
|
-
petal_qc/thermal/PipeFit.py,sha256=
|
|
57
|
+
petal_qc/thermal/Petal_IR_Analysis.py,sha256=BrTii0GZ6KsNM65JUpfRNgOjsR1b2vFJUf0AyskTe3g,3998
|
|
58
|
+
petal_qc/thermal/PipeFit.py,sha256=7jeGPlIBCzeXIKKprGmucxWRrWLxhS4A4HZdt-tQpF4,18502
|
|
59
|
+
petal_qc/thermal/PipeIterFit.py,sha256=5ZOUKlZIsYVB3NSKsT-o3kNojHCXzX9ctMrqvWlJYfM,2053
|
|
56
60
|
petal_qc/thermal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
61
|
petal_qc/thermal/analyze_IRCore.py,sha256=-MsKGJR-5pJV93ipLau0FHQeconLhMPDuLQIT9LMWsU,21115
|
|
58
|
-
petal_qc/thermal/contours.py,sha256=
|
|
62
|
+
petal_qc/thermal/contours.py,sha256=l8eZOvOhJ50cpJZ2ZPOZ-yjsg3ByQAZ0BPUajag0MwU,9862
|
|
59
63
|
petal_qc/thermal/coreThermal.py,sha256=lBPyBm3Fo5uXBw6AIpzTY4Ku238Gr9lwm36Iihfbqp0,16203
|
|
60
|
-
petal_qc/thermal/create_IRCore.py,sha256=
|
|
64
|
+
petal_qc/thermal/create_IRCore.py,sha256=pRHanrKdN9rCL2BurpnCI_958CySu0Ku9yjwssBeCpg,9354
|
|
61
65
|
petal_qc/thermal/create_core_report.py,sha256=32F7u7ffnLmGX5J_YP2oa8O_pI0euh9z3p0CTpA3-WM,6135
|
|
62
66
|
petal_qc/thermal/pipe_back.npz,sha256=yooZuVYtHU541HcV6Gh_5B0BqdYAVEvYAuVvMMSY7Jc,3632
|
|
63
67
|
petal_qc/thermal/pipe_front.npz,sha256=DuwruG9C2Z1rLigqWMApY4Orsf1SGUQGKy0Yan8Bk8A,3697
|
|
@@ -72,8 +76,8 @@ petal_qc/utils/docx_utils.py,sha256=zVmSKHDVE8cUwbXxqyPtgS0z62VCFya1DWklOpO1rCQ,
|
|
|
72
76
|
petal_qc/utils/fit_utils.py,sha256=3KUGWpBMV-bVDkQHWBigXot8chOpjAVBJ5H5b5dbdjk,5349
|
|
73
77
|
petal_qc/utils/readGraphana.py,sha256=YVOztJC3q3P7F0I9Ggeiu6Mv9rZLKgj3clkLCU7k4i4,1918
|
|
74
78
|
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.
|
|
79
|
+
petal_qc-0.0.22.dist-info/METADATA,sha256=wOc_109Gke7y9aMvGCDFvSW_ciFb2aVuHO39MeB1W6Q,953
|
|
80
|
+
petal_qc-0.0.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
81
|
+
petal_qc-0.0.22.dist-info/entry_points.txt,sha256=8cW3MiDBs3BdBPIzf4YtkOjr-MhPKu9aWfc0BTYBhxQ,554
|
|
82
|
+
petal_qc-0.0.22.dist-info/top_level.txt,sha256=CCo1Xe6kLS79PruhsB6bk2CuL9VFtNdNpgJjYUs4jk4,9
|
|
83
|
+
petal_qc-0.0.22.dist-info/RECORD,,
|
|
@@ -9,4 +9,5 @@ doMetrology = petal_qc:doMetrology
|
|
|
9
9
|
petalCoreTestSummary = petal_qc:petalCoreTestSummary
|
|
10
10
|
petalReceptionTests = petal_qc:petalReceptionTests
|
|
11
11
|
petalqc_dashBoard = petal_qc:dashBoard
|
|
12
|
+
readReceptionTests = petal_qc:readReceptionTests
|
|
12
13
|
uploadPetalInformation = petal_qc:uploadPetalInformation
|
|
File without changes
|