409 KiB
409 KiB
Scripts for Calibration of Cernox Sensors¶
Make a copy of this notebook for an other run.
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, npexp
In [2]:
run = CalibRun([ Sensor(3, 'X75610'), # the reference sensor must be the first Sensor(1, 'X220790', 'CX-1010-CU-HT'), Sensor(2, 'X220943', 'CX-1050-CU-HT'), Sensor(4, 'X149796', 'CX-1050-SD-HT'), Sensor(5, 'X221295', 'CX-1050-CU-HT'), Sensor(6, 'X222481', '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-12', # 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-12_p0_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c1.dat')
{'selected': 0, 'averaged': 60}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c2.dat')
{'selected': 0, 'averaged': 60}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c4.dat')
{'selected': 0, 'averaged': 60}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c5.dat')
{'selected': 0, 'averaged': 60}
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c6.dat')
{'selected': 0, 'averaged': 60}
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')
IOErrorTraceback (most recent call last) <ipython-input-26-fb75a641ebf6> in <module>() 4 testlist = (('X133982', 'z340'),('X133928', 'z340'),('X131824', 'z340'),('X132254', 'z340'),('X137461', 'z340')) 5 for sensno, kind in testlist: ----> 6 r0, t0 = read_curve('2023-11-05/%s.340' % sensno, 'z340') 7 r1, t1 = read_curve('2023-11-05/%s.340' % sensno, kind) 8 diff = compare_calib(r1, t1, r0, t0) /home/l_samenv/sea/calib_scripts/zcalib.pyc in read_curve(filename, kind, instance, **filterargs) 118 print(kind, "READ %s" % filename) 119 --> 120 with open(filename) as f: 121 curves = [[] for c in filter.output] 122 for line in f: IOError: [Errno 2] No such file or directory: '2023-11-05/X133982.340'
<Figure size 720x432 with 0 Axes>
In [5]:
# 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-12/X220790.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c1.dat')
('z340', 'READ 2024-12-12/X220943.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c2.dat')
('z340', 'READ 2024-12-12/X149796.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c4.dat')
('z340', 'READ 2024-12-12/X221295.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c5.dat')
('z340', 'READ 2024-12-12/X222481.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c6.dat')
In [3]:
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-12/X220790.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c1.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c1.dat')
('z340', 'READ 2024-12-12/X220943.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c2.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c2.dat')
('z340', 'READ 2024-12-12/X149796.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c4.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c4.dat')
('z340', 'READ 2024-12-12/X221295.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c5.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c5.dat')
('z340', 'READ 2024-12-12/X222481.340')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p0_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p1_c6.dat')
('zdat', 'READ /home/l_samenv/sea/calib_scripts/calib_data/calib2024-12-12_p2_c6.dat')
In [4]:
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()
('z340', 'READ 2024-12-12/X220790.340')
('z340', 'READ 2024-12-12/X220943.340')
('z340', 'READ 2024-12-12/X149796.340')
('z340', 'READ 2024-12-12/X221295.340')
('z340', 'READ 2024-12-12/X222481.340')
Out[4]:
<matplotlib.legend.Legend at 0x4ae3090>
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: