Files
calib_scripts/merge_calib_files.ipynb
2026-02-13 14:42:24 +01:00

9.7 KiB

In [ ]:
 
In [9]:
import numpy as np
from zcalib import read_curve
calib_data_file='calib_data/calib%s_p%d_c%d.dat'
In [1]:
def merge(dates, chans, phases, newdate, dif=1e-2):
    # merge calib runs from dates. the newer points overwriting the older ones (when within 1 %)
    # newdate should be a date not yet used for measuring (recommended: last day +1)
    dif = 2 * dif
    chans = list(chans)
    phases = list(phases)
    for chan in chans:
        for phase in phases:
            merged = None
            for date in dates:
                try:
                    xy = read_curve(calib_data_file % (date, phase, chan), 'zdat')
                except FileNotFoundError:
                    continue
                a=np.array(xy)
                xy = a[:,a[0,:].argsort()]
                if merged is None:
                    merged = xy
                else:
                    idx = np.searchsorted(merged[0], xy[0])
                    l = len(merged[0])
                    mask = [True] * l
                    for i, x, y in zip(idx, xy[0], xy[1]):
                        match = None
                        i0 = max(i -1, 0)
                        i1 = min(i, l - 1)
                        x0 = merged[0][i0]
                        x1 = merged[0][i1]
                        if abs(x - x0) > abs(x - x1):
                            x0 = x1
                            i0 = i1
                        if abs(x0 - x) < abs(x0 + x) * dif:
                            print('match', i0, x0, x)
                            mask[i0] = False
                    merged = np.concatenate((merged[:,mask], xy), axis=1)
                    merged = merged[:, merged[0,:].argsort()]
                    with open(calib_data_file % (newdate, phase, chan), 'w') as f:
                        f.write('#zdat (zcalib by M.Zolliker 2018) merged from %r\n' % dates)
                        f.write('#idx\tR ref\tR meas\tdummy sigma\n')
                        for i, (x, y) in enumerate(zip(merged[0], merged[1])):
                            f.write('%i\t%.7g\t%.7g\t%.2g\n' % (i, x, y, y*1e-4))
In [102]:
merge(['2021-04-26', '2021-04-29'], [1,2,4,5,6], [0,1,2], '2021-04-30')
zdat READ calib_data/calib2021-04-26_p0_c1.dat
zdat READ calib_data/calib2021-04-29_p0_c1.dat
match 0 60.6828 60.5225
match 0 60.6828 62.22
match 1 65.3199 65.2872
match 2 71.5522 71.7035
match 3 77.9688 79.2125
match 54 11969.96 11938.23
match 55 14495.35 14613.01
match 56 17491.93 17880.41
match 57 21464.01 21959.49
match 58 26788.25 26765.2
zdat READ calib_data/calib2021-04-26_p1_c1.dat
zdat READ calib_data/calib2021-04-29_p1_c1.dat
match 0 60.6401 60.4238
match 0 60.6401 62.0921
match 1 65.2441 65.1589
match 2 71.4937 71.5521
match 3 77.9248 79.0168
match 54 11970.07 11938.39
match 55 14496.17 14614.4
match 56 17491.71 17885.05
match 57 21463.69 21987.46
match 58 26789.83 26797.09
zdat READ calib_data/calib2021-04-26_p2_c1.dat
zdat READ calib_data/calib2021-04-29_p2_c1.dat
match 0 60.61 60.3502
match 0 60.61 61.9986
match 1 65.2153 65.0644
match 2 71.445 71.4354
match 3 77.9122 78.8533
match 54 11970.73 11938.91
match 55 14496.28 14615.56
match 56 17491.46 17885.1
match 57 21465.49 22002.05
match 58 26792.74 26845.82
zdat READ calib_data/calib2021-04-26_p0_c2.dat
zdat READ calib_data/calib2021-04-29_p0_c2.dat
match 0 60.6738 60.5019
match 0 60.6738 62.1941
match 1 65.3022 65.2622
match 2 71.5424 71.6725
match 3 77.9592 79.1747
match 54 11969.67 11937.73
match 55 14494.71 14613.29
match 56 17491.23 17878.45
match 57 21461.43 21967.88
zdat READ calib_data/calib2021-04-26_p1_c2.dat
zdat READ calib_data/calib2021-04-29_p1_c2.dat
match 0 60.6329 60.4077
match 0 60.6329 62.0709
match 1 65.236 65.138
match 2 71.4827 71.5259
match 3 77.9188 78.9836
match 54 11971.0 11937.87
match 55 14494.66 14613.6
match 56 17491.53 17888.38
match 57 21462.17 21995.97
zdat READ calib_data/calib2021-04-26_p2_c2.dat
zdat READ calib_data/calib2021-04-29_p2_c2.dat
match 0 60.6047 60.3381
match 0 60.6047 61.9834
match 1 65.2122 65.0488
match 2 71.4364 71.4159
match 3 77.9137 78.8249
match 54 11970.36 11938.86
match 55 14495.7 14615.54
match 56 17490.91 17883.25
match 57 21465.81 22002.38
zdat READ calib_data/calib2021-04-26_p0_c4.dat
zdat READ calib_data/calib2021-04-29_p0_c4.dat
match 0 60.6654 60.4822
match 0 60.6654 62.1667
match 1 65.2838 65.2365
match 2 71.5296 71.642
match 3 77.948 79.1353
match 54 11969.16 11937.58
match 55 14494.9 14612.55
match 56 17491.32 17871.27
zdat READ calib_data/calib2021-04-26_p1_c4.dat
zdat READ calib_data/calib2021-04-29_p1_c4.dat
match 0 60.6263 60.393
match 0 60.6263 62.0524
match 1 65.2303 65.119
match 2 71.4728 71.5025
match 3 77.9147 78.9508
match 54 11971.08 11937.77
match 55 14492.33 14612.57
match 56 17490.81 17882.02
zdat READ calib_data/calib2021-04-26_p2_c4.dat
zdat READ calib_data/calib2021-04-29_p2_c4.dat
match 0 60.5998 60.3267
match 0 60.5998 61.9687
match 1 65.2085 65.0359
match 2 71.4287 71.3971
match 3 77.9172 78.7986
match 54 11969.85 11939.03
match 55 14495.65 14617.38
match 56 17493.0 17883.93
zdat READ calib_data/calib2021-04-26_p0_c5.dat
zdat READ calib_data/calib2021-04-29_p0_c5.dat
match 0 60.6577 60.4638
match 0 60.6577 62.1421
match 1 65.2696 65.2109
match 2 71.5173 71.6141
match 3 77.9401 79.097
match 54 11967.54 11937.55
match 55 14495.17 14612.01
zdat READ calib_data/calib2021-04-26_p1_c5.dat
zdat READ calib_data/calib2021-04-29_p1_c5.dat
match 0 60.6216 60.3783
match 0 60.6216 62.0355
match 1 65.2252 65.1019
match 2 71.4646 71.4823
match 3 77.9127 78.9198
match 54 11968.57 11937.86
match 55 14489.46 14613.21
zdat READ calib_data/calib2021-04-26_p2_c5.dat
zdat READ calib_data/calib2021-04-29_p2_c5.dat
match 0 60.5956 60.3165
match 0 60.5956 61.9555
match 1 65.2047 65.0238
match 2 71.4227 71.3795
match 3 77.9208 78.7734
match 54 11968.67 11938.29
match 55 14495.33 14617.0
zdat READ calib_data/calib2021-04-26_p0_c6.dat
zdat READ calib_data/calib2021-04-29_p0_c6.dat
match 0 60.6543 60.4507
match 0 60.6543 62.1239
match 1 65.2614 65.1914
match 2 71.5115 71.5911
match 3 77.9375 79.0654
match 54 11967.5 11938.06
zdat READ calib_data/calib2021-04-26_p1_c6.dat
zdat READ calib_data/calib2021-04-29_p1_c6.dat
match 0 60.6207 60.3694
match 0 60.6207 62.0242
match 1 65.224 65.09
match 2 71.4602 71.4666
match 3 77.9164 78.8953
match 54 11967.81 11937.43
zdat READ calib_data/calib2021-04-26_p2_c6.dat
zdat READ calib_data/calib2021-04-29_p2_c6.dat
match 0 60.5959 60.311
match 0 60.5959 61.9487
match 1 65.2048 65.0151
match 2 71.4216 71.368
match 3 77.9299 78.7532
match 54 11967.56 11937.76
In [ ]:
 
In [ ]:
 
In [ ]: