466 KiB
466 KiB
In [1]:
import numpy as np
import matplotlib.pyplot as plt
import math
from scipy.interpolate import splrep, splev
from zcalib import read_curve, convert_res, compare_calib, make_calib, logrange, Sensor, CalibRun, nplog, npexpIn [2]:
run = CalibRun([
Sensor(3, 'X75610'), # the reference sensor must be the first
Sensor(1, 'X142475', 'CX-1050-CU-HT'),
Sensor(2, 'X221296', 'CX-1050-CU-HT'),
Sensor(4, 'X149797', 'CX-1050-SD-HT'),
Sensor(5, 'X221297', 'CX-1050-CU-HT'),
Sensor(6, 'X221298', 'CX-1050-CU-HT'),
],
t_points = (1.58,1.59) + logrange(1.6, 310, n=195) + (330,), # the points to be used in the cal file
caldate = '2024-12-09', # the first measuring day!
logT = False,
logR = True,
calib_data_file = '/home/l_samenv/sea/calib_scripts/calib_data/calib%s_p%d_c%d.dat',
outputpath='%s/%s.340')
# smooth depends on number of measured points (1e-7 for 60, 0.8e-7 for 48 and 0.4e-7 for 24 points)
run.make(diflim=0.001, smoothref=1e-7, smoothtst=0.4e-7)('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2012/73027 Cernox 5/X75610.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c1.dat')
{'selected': 0, 'averaged': 59}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c2.dat')
{'selected': 0, 'averaged': 59}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c4.dat')
{'selected': 0, 'averaged': 59}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c5.dat')
(65.544, 81.2136, 42.325388448806535, -0.47883866188906127)
(62.4943, 77.5486, 40.60352175244162, -0.47641193068035237)
(60.8736, 75.6053, 39.68410649020259, -0.47511475398943476)
{'selected': 1, 'averaged': 47}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c6.dat')
{'selected': 0, 'averaged': 59}
In [26]:
# compare known sensors (skip if not applicable)
plt.figure(figsize=(10, 6))
tmin,tmax,dmax=1.4,310,0.001
testlist = (('X133982', 'z340'),('X133928', 'z340'),('X131824', 'z340'),('X132254', 'z340'),('X137461', 'z340'))
for sensno, kind in testlist:
r0, t0 = read_curve('2023-11-05/%s.340' % sensno, 'z340')
r1, t1 = read_curve('2023-11-05/%s.340' % sensno, kind)
diff = compare_calib(r1, t1, r0, t0)
plt.plot(t0, diff, '-')
plt.plot([tmin,tmax,tmax,tmin,tmin], [-dmax,-dmax,dmax,dmax,-dmax], '-')
plt.legend([sensno + "." + kind[-3:] for sensno, kind in testlist] + ["window"])
plt.xscale('log')
plt.yscale('symlog',linthreshy=dmax)
plt.grid(True, axis='y')
plt.axis([1.0,350,-1,1])
plt.show()('z340', 'READ 2023-11-05/X133982.340')
[0;31m[0m [0;31mIOError[0mTraceback (most recent call last) [0;32m<ipython-input-26-fb75a641ebf6>[0m in [0;36m<module>[0;34m()[0m [1;32m 4[0m [0mtestlist[0m [0;34m=[0m [0;34m([0m[0;34m([0m[0;34m'X133982'[0m[0;34m,[0m [0;34m'z340'[0m[0;34m)[0m[0;34m,[0m[0;34m([0m[0;34m'X133928'[0m[0;34m,[0m [0;34m'z340'[0m[0;34m)[0m[0;34m,[0m[0;34m([0m[0;34m'X131824'[0m[0;34m,[0m [0;34m'z340'[0m[0;34m)[0m[0;34m,[0m[0;34m([0m[0;34m'X132254'[0m[0;34m,[0m [0;34m'z340'[0m[0;34m)[0m[0;34m,[0m[0;34m([0m[0;34m'X137461'[0m[0;34m,[0m [0;34m'z340'[0m[0;34m)[0m[0;34m)[0m[0;34m[0m[0m [1;32m 5[0m [0;32mfor[0m [0msensno[0m[0;34m,[0m [0mkind[0m [0;32min[0m [0mtestlist[0m[0;34m:[0m[0;34m[0m[0m [0;32m----> 6[0;31m [0mr0[0m[0;34m,[0m [0mt0[0m [0;34m=[0m [0mread_curve[0m[0;34m([0m[0;34m'2023-11-05/%s.340'[0m [0;34m%[0m [0msensno[0m[0;34m,[0m [0;34m'z340'[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 7[0m [0mr1[0m[0;34m,[0m [0mt1[0m [0;34m=[0m [0mread_curve[0m[0;34m([0m[0;34m'2023-11-05/%s.340'[0m [0;34m%[0m [0msensno[0m[0;34m,[0m [0mkind[0m[0;34m)[0m[0;34m[0m[0m [1;32m 8[0m [0mdiff[0m [0;34m=[0m [0mcompare_calib[0m[0;34m([0m[0mr1[0m[0;34m,[0m [0mt1[0m[0;34m,[0m [0mr0[0m[0;34m,[0m [0mt0[0m[0;34m)[0m[0;34m[0m[0m [0;32m/home/l_samenv/sea/calib_scripts/zcalib.pyc[0m in [0;36mread_curve[0;34m(filename, kind, instance, **filterargs)[0m [1;32m 118[0m [0;32mprint[0m[0;34m([0m[0mkind[0m[0;34m,[0m [0;34m"READ %s"[0m [0;34m%[0m [0mfilename[0m[0;34m)[0m[0;34m[0m[0m [1;32m 119[0m [0;34m[0m[0m [0;32m--> 120[0;31m [0;32mwith[0m [0mopen[0m[0;34m([0m[0mfilename[0m[0;34m)[0m [0;32mas[0m [0mf[0m[0;34m:[0m[0;34m[0m[0m [0m[1;32m 121[0m [0mcurves[0m [0;34m=[0m [0;34m[[0m[0;34m[[0m[0;34m][0m [0;32mfor[0m [0mc[0m [0;32min[0m [0mfilter[0m[0;34m.[0m[0moutput[0m[0;34m][0m[0;34m[0m[0m [1;32m 122[0m [0;32mfor[0m [0mline[0m [0;32min[0m [0mf[0m[0;34m:[0m[0;34m[0m[0m [0;31mIOError[0m: [Errno 2] No such file or directory: '2023-11-05/X133982.340'
<Figure size 720x432 with 0 Axes>
In [3]:
# compare calibration files from points 0,1,2
# with the optimized (average or selection of best)
for sensor in run.sensors:
r0, t0 = read_curve(sensor.outputpath, sensor.outputkind)
plt.figure()
dif = [0,0,0]
for j in range(3):
rr, rt = read_curve(sensor.caldat_file[j], 'zdat')
rc, tc = make_calib(run.rref, run.tref, rr, rt, run.t_points)
dif[j] = compare_calib(r0, t0, rc, tc)
plt.plot(t0, dif[j], '-')
plt.xscale('log')
plt.yscale('symlog', linthreshy=0.001)
plt.grid(True, axis='y')
plt.axis([min(t0),max(t0),-1,1])
tmin,tmax,dmax=1.4,310,0.001
plt.plot([tmin,tmax,tmax,tmin,tmin], [-dmax,-dmax,dmax,dmax,-dmax], '-')
plt.legend(['dif1','dif2','dif3','est'])
plt.show()('z340', 'READ 2024-12-09/X142475.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c1.dat')
('z340', 'READ 2024-12-09/X221296.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c2.dat')
('z340', 'READ 2024-12-09/X149797.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c4.dat')
('z340', 'READ 2024-12-09/X221297.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c5.dat')
(83.16450210147866, 149.50877657012006, 132.17167050262572, -0.1159604570729879)
(83.21423990896714, 153.6017389156212, 132.08322794064375, -0.14009288649263488)
(83.40039828257585, 157.80675047419183, 131.75314920419711, -0.16509814182033739)
(83.70397950047611, 162.1268787126423, 131.2180419172449, -0.19064597456527238)
(84.10590427033374, 166.5652750729607, 130.5155825981662, -0.2164298198349184)
(84.58679711099641, 171.12517727122327, 129.68396098987373, -0.24216901885610712)
(85.1268175430344, 175.80991165944047, 128.7614070977305, -0.26761008021463045)
(85.70553567123227, 180.62289565205901, 127.78580573913237, -0.29252708922743)
(86.30185924917278, 185.56764021889387, 126.79440087468993, -0.31672138135116434)
(86.89401159763034, 190.64775244630692, 125.8235554764812, -0.3400207772608412)
(87.45956744892986, 195.86693816849888, 124.90865019107314, -0.36227802732272407)
(87.9755469815512, 201.22900467083724, 124.08418645228348, -0.3833682840341248)
(88.41857179249764, 206.7378634671911, 123.38391697010562, -0.4031866495046447)
(88.7650827771925, 212.39753315329597, 122.84110701208873, -0.42164532144811073)
(88.99161921955013, 218.212142338236, 122.488600298773, -0.4386719318812624)
(89.07515574583614, 224.18593265617528, 122.35908767976991, -0.454207111793107)
(88.99349145055703, 230.32326186054073, 122.48569482618811, -0.46820093707967536)
(88.72568252569796, 236.6286070029114, 122.9026082014283, -0.480609678778542)
(88.25250678306777, 243.10656769893157, 123.64558967114161, -0.491393462375451)
(87.55694629743611, 249.76186948363343, 124.75231190122113, -0.5005149818939997)
(86.6247199044819, 256.5993672586155, 126.26340501000392, -0.5079356338289469)
(85.44501855709902, 263.6240488335885, 128.22332780036743, -0.5136129333886841)
(84.01096232922399, 270.84103856487945, 130.68090456987917, -0.5174996179961302)
(82.31992785609854, 278.25560109353853, 133.68990579979638, -0.5195428042619882)
(80.37650868545292, 285.87314518578415, 137.30548437531678, -0.5196978565927056)
(78.28239194173794, 293.69922767858435, 141.40414011887458, -0.5185409875383702)
(76.24153504553384, 301.7395575332493, 145.6165490745351, -0.5174098143943578)
(74.37766302187545, 310.0, 149.66685661846319, -0.5172036883275382)
(70.30446342893819, 330.0, 159.27088275934463, -0.5173609613353193)
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c5.dat')
('z340', 'READ 2024-12-09/X221298.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c6.dat')
In [4]:
for sensor in run.sensors:
r0, t0 = read_curve(sensor.outputpath, sensor.outputkind)
plt.figure()
dif = [0,0,0]
for j in range(3):
rr, rt = read_curve(sensor.caldat_file[j], 'zdat')
rc, tc = make_calib(run.rref, run.tref, rr, rt, run.t_points)
dif[j] = compare_calib(r0, t0, rc, tc)
plt.plot(t0, dif[j], '-')
plt.xscale('log')
plt.yscale('symlog', linthreshy=0.001)
plt.grid(True, axis='y')
plt.axis([min(t0),max(t0),-1,1])
tmin,tmax,dmax=1.4,310,0.001
plt.plot([tmin,tmax,tmax,tmin,tmin], [-dmax,-dmax,dmax,dmax,-dmax], '-')
plt.legend(['dif1','dif2','dif3','est'])
plt.show()('z340', 'READ 2024-12-09/X142475.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c1.dat')
('z340', 'READ 2024-12-09/X221296.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c2.dat')
('z340', 'READ 2024-12-09/X149797.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c4.dat')
('z340', 'READ 2024-12-09/X221297.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c5.dat')
(83.16450210147866, 149.50877657012006, 132.17167050262572, -0.1159604570729879)
(83.21423990896714, 153.6017389156212, 132.08322794064375, -0.14009288649263488)
(83.40039828257585, 157.80675047419183, 131.75314920419711, -0.16509814182033739)
(83.70397950047611, 162.1268787126423, 131.2180419172449, -0.19064597456527238)
(84.10590427033374, 166.5652750729607, 130.5155825981662, -0.2164298198349184)
(84.58679711099641, 171.12517727122327, 129.68396098987373, -0.24216901885610712)
(85.1268175430344, 175.80991165944047, 128.7614070977305, -0.26761008021463045)
(85.70553567123227, 180.62289565205901, 127.78580573913237, -0.29252708922743)
(86.30185924917278, 185.56764021889387, 126.79440087468993, -0.31672138135116434)
(86.89401159763034, 190.64775244630692, 125.8235554764812, -0.3400207772608412)
(87.45956744892986, 195.86693816849888, 124.90865019107314, -0.36227802732272407)
(87.9755469815512, 201.22900467083724, 124.08418645228348, -0.3833682840341248)
(88.41857179249764, 206.7378634671911, 123.38391697010562, -0.4031866495046447)
(88.7650827771925, 212.39753315329597, 122.84110701208873, -0.42164532144811073)
(88.99161921955013, 218.212142338236, 122.488600298773, -0.4386719318812624)
(89.07515574583614, 224.18593265617528, 122.35908767976991, -0.454207111793107)
(88.99349145055703, 230.32326186054073, 122.48569482618811, -0.46820093707967536)
(88.72568252569796, 236.6286070029114, 122.9026082014283, -0.480609678778542)
(88.25250678306777, 243.10656769893157, 123.64558967114161, -0.491393462375451)
(87.55694629743611, 249.76186948363343, 124.75231190122113, -0.5005149818939997)
(86.6247199044819, 256.5993672586155, 126.26340501000392, -0.5079356338289469)
(85.44501855709902, 263.6240488335885, 128.22332780036743, -0.5136129333886841)
(84.01096232922399, 270.84103856487945, 130.68090456987917, -0.5174996179961302)
(82.31992785609854, 278.25560109353853, 133.68990579979638, -0.5195428042619882)
(80.37650868545292, 285.87314518578415, 137.30548437531678, -0.5196978565927056)
(78.28239194173794, 293.69922767858435, 141.40414011887458, -0.5185409875383702)
(76.24153504553384, 301.7395575332493, 145.6165490745351, -0.5174098143943578)
(74.37766302187545, 310.0, 149.66685661846319, -0.5172036883275382)
(70.30446342893819, 330.0, 159.27088275934463, -0.5173609613353193)
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c5.dat')
('z340', 'READ 2024-12-09/X221298.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p0_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p1_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-09_p2_c6.dat')
In [74]:
plt.figure(figsize=(10,6),dpi=150)
for sensor in run.sensors:
r0, t0 = read_curve(sensor.outputpath, sensor.outputkind)
plt.loglog(t0,r0,'o',alpha=0.5, label="CH{}:{} {}".format(sensor.channel, sensor.serialno, sensor.model))
plt.title(sensor.outputpath.split('/')[0])
plt.grid(which='both',alpha=0.2)
plt.xlabel('T (K)')
plt.ylabel('R (Ohm)')
plt.legend()Out [74]:
('z340', 'READ 2024-12-09/X142475.340')
('z340', 'READ 2024-12-09/X221296.340')
('z340', 'READ 2024-12-09/X149797.340')
('z340', 'READ 2024-12-09/X221297.340')
('z340', 'READ 2024-12-09/X221298.340')
<matplotlib.legend.Legend at 0xc954590>
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: