Files
calib_scripts/merge_calib_files.ipynb
T

280 lines
9.7 KiB
Plaintext
Raw Normal View History

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