232 KiB
232 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(5, 'X133273', 'CX-1030-CU-HT-0.3L'),
Sensor(4, 'X55918', 'CX-1050-SD-HT-1.4L'),
Sensor(1, 'X134003', 'CX-1050-SD'),
Sensor(2, 'X134014', 'CX-1050-SD'),
Sensor(6, 'X133980', 'CX-1050-SD'),
],
t_points = (1.0, 1.2) + logrange(1.4, 310, n=195) + (330,),
caldate = '2018-11-15',
logT = False,
logR = True,
calib_data_file = '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=1e-7)
print('calibration file has %d points' % len(run.t_points))('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2012/73027 Cernox 5/X75610.dat')
('zdat', 'READ calib_data/calib2018-11-15_p0_c5.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c5.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c5.dat')
{'selected': 0, 'averaged': 60}
('zdat', 'READ calib_data/calib2018-11-15_p0_c4.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c4.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c4.dat')
{'selected': 1, 'averaged': 59}
('zdat', 'READ calib_data/calib2018-11-15_p0_c1.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c1.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c1.dat')
{'selected': 1, 'averaged': 59}
('zdat', 'READ calib_data/calib2018-11-15_p0_c2.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c2.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c2.dat')
{'selected': 0, 'averaged': 60}
('zdat', 'READ calib_data/calib2018-11-15_p0_c6.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c6.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c6.dat')
{'selected': 0, 'averaged': 60}
calibration file has 199 points
In [3]:
# compare known sensors
plt.figure(figsize=(10, 6))
tmin,tmax,dmax=1.4,310,0.001
testlist = (('X133273', 'lsdat'), ('X133273', 'ls340'), ('X55918', 'lsdat'), ('X55918', 'ls340'))
for sensno, kind in testlist:
r0, t0 = read_curve(sensno, 'z340')
r1, t1 = read_curve(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[2:] 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 2018-11-15/X133273.340')
('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2018/X133273_for_He3/X133273.dat')
('z340', 'READ 2018-11-15/X133273.340')
('ls340', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2018/X133273_for_He3/X133273.340')
('z340', 'READ 2018-11-15/X55918.340')
('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2009/51750 Cernox HiT/X55918.dat')
('z340', 'READ 2018-11-15/X55918.340')
('ls340', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2009/51750 Cernox HiT/X55918.340')
In [4]:
# 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])
#plt.legend(['dif1','dif2','dif3','est'])
plt.show()('z340', 'READ 2018-11-15/X133273.340')
('zdat', 'READ calib_data/calib2018-11-15_p0_c5.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c5.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c5.dat')
('z340', 'READ 2018-11-15/X55918.340')
('zdat', 'READ calib_data/calib2018-11-15_p0_c4.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c4.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c4.dat')
('z340', 'READ 2018-11-15/X134003.340')
('zdat', 'READ calib_data/calib2018-11-15_p0_c1.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c1.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c1.dat')
('z340', 'READ 2018-11-15/X134014.340')
('zdat', 'READ calib_data/calib2018-11-15_p0_c2.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c2.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c2.dat')
('z340', 'READ 2018-11-15/X133980.340')
('zdat', 'READ calib_data/calib2018-11-15_p0_c6.dat')
('zdat', 'READ calib_data/calib2018-11-15_p1_c6.dat')
('zdat', 'READ calib_data/calib2018-11-15_p2_c6.dat')
In [5]:
# compare with less points
sensors = ('X133273', 'X55918')
steps = (1,2,3,4,6)
tmin,tmax,dmax=1.4,310,0.001
kind = 'lsdat'
for sensno in sensors:
sensor = run.sensdict[sensno]
r1, t1 = read_curve(sensno, kind)
plt.figure(figsize=(10, 6))
for step in steps:
meas0 = sensor.meas.reduced(step)
rc, tc = sensor.make_calib(run, meas0)
diff = compare_calib(r1, t1, rc, tc)
plt.plot(tc, diff, '-')
plt.plot([tmin,tmax,tmax,tmin,tmin], [-dmax,-dmax,dmax,dmax,-dmax], '-')
plt.legend([str(step) for step in steps] + ["window"])
plt.xscale('log')
plt.yscale('symlog',linthreshy=dmax)
plt.grid(True, axis='y')
plt.axis([1.0,350,-1,1])
plt.show()('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2018/X133273_for_He3/X133273.dat')
{'selected': 0, 'averaged': 60}
{'selected': 0, 'averaged': 30}
{'selected': 0, 'averaged': 20}
{'selected': 0, 'averaged': 15}
{'selected': 0, 'averaged': 10}
('lsdat', 'READ /afs/psi.ch/project/SampleEnvironment/SE_internal/Thermometer_calibs/2009/51750 Cernox HiT/X55918.dat')
{'selected': 1, 'averaged': 59}
{'selected': 0, 'averaged': 30}
{'selected': 0, 'averaged': 20}
{'selected': 0, 'averaged': 15}
{'selected': 0, 'averaged': 10}
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: