{ "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 }