{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import print_function\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "%load_ext cython" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%%cython\n", "#cython: boundscheck=False\n", "def LSE(double[:] x, double[:] y, int n, float bad):\n", "\n", " \"\"\"\n", " This is a Least Square Estimate subroutine to fit a linear\n", " equation for (xi, yi) (i = 1, ..., n), so that yi = a * xi + b\n", " INPUTs: x(i), y(i), n, (i = 1, ..., n ).\n", " OUTPUTs: a (slope), b (intercept).\n", " Li Liu - Sep. 23, 92\n", " Timothy Lang - Updated for Cython, 05/03/2016\n", " - Confirmed ~50 times faster than 1-deg np.polyfit()\n", " \"\"\"\n", "\n", " cdef:\n", " float a\n", " float b\n", " float xsum = 0.0\n", " float ysum = 0.0\n", " float xxsum = 0.0\n", " float xysum = 0.0\n", " float det\n", " float total\n", " Py_ssize_t i\n", "\n", " total = float(n)\n", " for i in range(n):\n", " if x[i] == bad or y[i] == bad:\n", " total -= 1.0\n", " else:\n", " xsum += x[i]\n", " ysum += y[i]\n", " xxsum += x[i] * x[i]\n", " xysum += x[i] * y[i]\n", "\n", " det = total * xxsum - xsum**2\n", " a = (total * xysum - xsum * ysum) / det\n", " b = (ysum * xxsum - xsum * xysum) / det\n", " return a, b" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = 30\n", "x = 1.0 * np.arange(n, dtype='float')\n", "y = 3.0 + 6.0 * np.arange(n, dtype='float')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dtype('float64')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x.dtype" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 6., 3.])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.polyfit(x, y, 1)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000 loops, best of 3: 113 µs per loop\n" ] } ], "source": [ "%timeit np.polyfit(x, y, 1)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(6.0, 3.0000147819519043)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LSE(x, y, 30, -32768)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The slowest run took 8.40 times longer than the fastest. This could mean that an intermediate result is being cached \n", "100000 loops, best of 3: 2.27 µs per loop\n" ] } ], "source": [ "%timeit LSE(x, y, n, -32768)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 " ] } ], "source": [ "for i in range(100, 200, 1):\n", " print(i, end=' ')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%%cython\n", "#cython: boundscheck=False\n", "\n", "from libc.math cimport sqrt\n", "cimport numpy as np\n", "import numpy as np\n", "\n", "\n", "def LSE(double[:] x, double[:] y, int n, float bad):\n", " \"\"\"\n", " This is a Least Square Estimate subroutine to fit a linear\n", " equation for (xi, yi) (i = 1, ..., n), so that yi = a * xi + b\n", " INPUTs: x(i), y(i), n, (i = 1, ..., n ).\n", " OUTPUTs: a (slope), b (intercept).\n", " Li Liu - Sep. 23, 92\n", " Timothy Lang - Updated for Cython, 05/03/2016\n", " - Confirmed ~50 times faster than 1-deg np.polyfit()\n", " \"\"\"\n", " cdef:\n", " float a\n", " float b\n", " float xsum = 0.0\n", " float ysum = 0.0\n", " float xxsum = 0.0\n", " float xysum = 0.0\n", " float det\n", " float total\n", " Py_ssize_t i\n", "\n", " total = float(n)\n", " for i in range(n):\n", " if x[i] == bad or y[i] == bad:\n", " total -= 1.0\n", " else:\n", " xsum += x[i]\n", " ysum += y[i]\n", " xxsum += x[i] * x[i]\n", " xysum += x[i] * y[i]\n", "\n", " det = total * xxsum - xsum**2\n", " a = (total * xysum - xsum * ysum) / det\n", " b = (ysum * xxsum - xsum * xysum) / det\n", " return a, b\n", "\n", "\n", "def calc_kdp_ray_fir(\n", " int ngates, float[:] dp, float[:] dz, float[:] rng,\n", " float[:] thsd, int nf, float bad, int fir_order, float fir_gain,\n", " double[:] fir_coeff, int std_gate):\n", " \"\"\"\n", " Arguments\n", " ---------\n", " dp = 1D ray of differential phase\n", " dz = 1D ray of reflectivity\n", " rng = 1D ray of range\n", " thsd = Scalar or 1D ray of diff phase stddev thresholds\n", " nf = Number of times to filter the data\n", " bad = Bad/missing data value\n", " fir_order = FIR filter order\n", " fir_gain = FIR filter gain\n", " fir_coeff = FIR filter coefficients\n", " std_gate = Number of gates to use for diff phase stddev calc\n", "\n", " Returns\n", " -------\n", " kd_lin = Specific differential phase (deg/km, 1D array)\n", " dp_lin = Filtered differential phase (deg, 1D array)\n", " sd_lin = Standard deviation of diff. phase (deg, 1D array)\n", " \"\"\"\n", " # Define needed variables\n", " cdef:\n", " np.ndarray[np.float64_t, ndim=1] xx = bad + np.zeros(500, dtype=np.float64)\n", " np.ndarray[np.float64_t, ndim=1] yy = bad + np.zeros(500, dtype=np.float64)\n", " np.ndarray[np.float32_t, ndim=1] y = np.zeros(ngates, dtype=np.float32)\n", " np.ndarray[np.float32_t, ndim=1] z = np.zeros(ngates, dtype=np.float32)\n", " np.ndarray[np.float32_t, ndim=1] kd_lin = np.zeros(ngates, dtype=np.float32)\n", " np.ndarray[np.float32_t, ndim=1] dp_lin = np.zeros(ngates, dtype=np.float32)\n", " np.ndarray[np.float32_t, ndim=1] sd_lin = np.zeros(ngates, dtype=np.float32)\n", " int half_std_win, nadp, half_fir_win\n", " int index1, index2, N, half_nadp\n", " double X, A, V, W, aa, bb\n", " Py_ssize_t i, j, mloop\n", "\n", " # Half window size for calculating stdev phase\n", " half_std_win = (std_gate - 1) / 2\n", " # Half window size for FIR filtering\n", " half_fir_win = fir_order / 2\n", "\n", " #####################################################################\n", " # Calculate standard deviation of phidp\n", " for i in range(ngates):\n", " kd_lin[i] = bad\n", " sd_lin[i] = 100.0\n", " y[i] = bad\n", " z[i] = dp[i]\n", " index1 = i - half_std_win\n", " index2 = i + half_std_win\n", " if index1 >= 0 and index2 <= ngates - 1:\n", " N = 0\n", " A = 0.0\n", " V = 0.0\n", " for j in range(index1, index2 + 1, 1):\n", " if dp[j] != bad:\n", " # Standard deviation algorithm\n", " X = dp[j]\n", " if N <= 0:\n", " W = X\n", " N += 1\n", " D = X - W\n", " V = (N - 1) * (D - A)**2 / N + V\n", " A = (D - A) / N + A\n", " if N > half_std_win:\n", " sd_lin[i] = sqrt(V / N)\n", "\n", " # ------------- MAIN LOOP of Phidp Adaptive Filtering ------------------\n", " # FIR FILTER SECTION\n", " for mloop in range(nf):\n", " for i in range(half_fir_win, ngates - half_fir_win, 1):\n", " if sd_lin[i] <= thsd[i] and z[i] != bad:\n", " index1 = i - half_fir_win\n", " index2 = i + half_fir_win\n", " N = 0\n", " for j in range(index1, index2 + 1, 1):\n", " if sd_lin[j] <= thsd[j] and z[j] != bad:\n", " yy[N] = z[j]\n", " xx[N] = rng[j]\n", " N += 1\n", "\n", " # Now fill in gaps if they aren't too big\n", " if float(N) > (0.8 * float(fir_order)):\n", " if N < fir_order + 1:\n", " aa, bb = LSE(xx, yy, N, bad)\n", " for j in range(index1, index2 + 1, 1):\n", " if z[j] == bad:\n", " z[j] = aa * rng[j] + bb\n", "\n", " # Now do the FIR filtering\n", " A = 0.0\n", " for j in range(index1, index2 + 1, 1):\n", " A += fir_coeff[j - index1 + 1] * z[j]\n", " y[i] = A * fir_gain\n", " for i in range(ngates):\n", " z[i] = y[i] # Enables re-filtering of processed phase\n", " for i in range(ngates):\n", " dp_lin[i] = z[i]\n", "\n", " # *****************END LOOP for Phidp Adaptive Filtering******************\n", "\n", " # CALCULATE KDP\n", " # Default value for nadp is half_fir_win, but varies based on Zh\n", " for i in range(ngates):\n", " if dz[i] != bad:\n", " if dz[i] >= 45.0:\n", " nadp = half_fir_win\n", " if dz[i] >= 35.0 and dz[i] < 45.0:\n", " nadp = 2 * half_fir_win\n", " if dz[i] < 35.0:\n", " nadp = 3 * half_fir_win\n", " half_nadp = nadp / 2\n", " index1 = i - half_nadp\n", " index2 = i + half_nadp\n", " N = 0\n", " for j in range(index1, index2, 1):\n", " if index1 >= 0 and index2 <= ngates - 1:\n", " if dp_lin[j] != bad:\n", " yy[N] = dp_lin[j]\n", " xx[N] = rng[j]\n", " N += 1\n", " if float(N) > (0.8 * float(nadp)):\n", " aa, bb = LSE(xx, yy, N, bad)\n", " kd_lin[i] = 0.5 * aa\n", "\n", " # *******************END KDP CALCULATION****************************\n", " return kd_lin, dp_lin, sd_lin" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Testing on file" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cfrad.20040805_213003.000_to_20040805_214323.000_SPOL_v1_SUR.nc\n" ] } ], "source": [ "import os, glob\n", "fdir = '/Users/tjlang/Documents/OVWST/NAME/output/20040805/'\n", "files = sorted(glob.glob(fdir+'*nc'))\n", "for file in files:\n", " print(os.path.basename(file))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[u'LD', u'KD', u'ZD', u'DR', u'DB', u'VR', u'HI', u'FD', u'DZ', u'PH', u'RH', u'SD']\n", "[ 23.92897135] [-106.95211372]\n", "[ 0.796875 1.296875 1.796875 3.203125 5.796875 8.5 11.109375\n", " 13.796875 16.40625 18.90625 21.5 23.90625 26.40625 ]\n" ] } ], "source": [ "import pyart\n", "radar = pyart.io.read(files[0])\n", "print(radar.fields.keys())\n", "print(radar.latitude['data'], radar.longitude['data'])\n", "print(radar.fixed_angle['data'])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def get_ray(radar, field, index):\n", " return radar.fields[field]['data'][index][:]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1368\n" ] } ], "source": [ "dp = get_ray(radar, 'PH', 60)\n", "dz = get_ray(radar, 'DZ', 60)\n", "kdo = get_ray(radar, 'KD', 60)\n", "fdo = get_ray(radar, 'FD', 60)\n", "dz = dz.filled(fill_value=-32768)\n", "sdo = get_ray(radar, 'SD', 60)\n", "rng = radar.range['data'] / 1000.0\n", "print(np.size(dp))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from csu_radartools import csu_kdp\n", "kd1, dp1, sd1 = csu_kdp.calc_kdp_bringi(\n", " rng=rng, dp=dp, dz=dz, nfilter=1, gs=150, window=3, thsd=12.0)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "fir = csu_kdp.get_fir(gs=150, window=3)\n", "thsd = 12.0 + 0.0 * dp\n", "kd2, dp2, sd2 = calc_kdp_ray_fir(len(dp), dp, dz, rng, thsd,\n", " 1, -32768, fir['order'], fir['gain'],\n", " fir['coef'], 11)\n", "# print('debug', i, N, z[i], sd_lin[i], thsd[i], index1, index2, half_fir_win, fir_order)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10 loops, best of 3: 165 ms per loop\n" ] } ], "source": [ "kd3, dp3, sd3 = csu_kdp._calc_kdp_ray(dp, dz, rng, thsd=12, nfilter=1, bad=-32768, fir=fir)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQCoDIYQQwP8Hmy+vwoOV2QMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mask1 = dz > -100\n", "mask = np.logical_and(dp1 >= -180, dz > -100)\n", "mask2 = np.logical_and(kd1 > -100, mask)\n", "mask3 = kdo > -100\n", "# plt.plot(rng[mask2], kd1[mask2], 'b*', label='csu_radartools')\n", "plt.plot(rng[mask3], kdo[mask3], 'r.', label='original')\n", "mask = np.logical_and(dp2 >= -180, dz > -100)\n", "mask2 = np.logical_and(kd2 > -100, mask)\n", "plt.plot(rng[mask2], kd2[mask2], 'y^', label='cython', mec='none', ms=3)\n", "mask = np.logical_and(dp3 >= -180, dz > -100)\n", "mask2 = np.logical_and(kd3 > -100, mask)\n", "# plt.plot(rng[mask2], kd3[mask2], 'mD', label='cython', mec='none', ms=2)\n", "plt.ylim([-1, 2.5])\n", "plt.legend(numpoints=1)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1000 loops, best of 3: 1.81 ms per loop\n" ] } ], "source": [ "%timeit calc_kdp_ray_fir(len(dp), dp, dz, rng, thsd, 1, -32768, fir['order'], \\\n", " fir['gain'], fir['coef'], 11)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1000 loops, best of 3: 387 µs per loop\n" ] } ], "source": [ "%timeit csu_kdp.calc_kdp_bringi(rng=rng, dp=dp, dz=dz, nfilter=1, gs=150, window=3)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10 loops, best of 3: 160 ms per loop\n" ] } ], "source": [ "%timeit csu_kdp._calc_kdp_ray(dp, dz, rng, thsd=12, nfilter=1, bad=-32768, fir=fir)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(sd1, 'k*', label='fortran')\n", "plt.plot(sd2, 'r.', label='cython', ms=3)\n", "plt.legend(numpoints=1)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-10, 60)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nD/B/A5MugF4lSVIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(dp, 'g-', label='unfiltered', lw=0.1)\n", "plt.plot(dp1, 'k*', label='fortran')\n", "plt.plot(dp2, 'r.', label='cython', ms=3)\n", "plt.plot(sd2, 'y-')\n", "plt.plot(12.0 + 0.0 * np.arange(len(dp)), 'k--')\n", "plt.legend(numpoints=1, loc='upper left', fontsize='small')\n", "plt.ylim(-10, 60)\n", "# plt.xlim(600, 800)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Checking loop logic" ] }, { "cell_type": "code", "execution_count": 207, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 " ] } ], "source": [ "i = 100\n", "half_fir_win = 10\n", "index1 = i - half_fir_win\n", "index2 = i + half_fir_win\n", "\n", "for j in range(index1, index2 + 1, 1):\n", " print(j, end=' ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Beta function Cython" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%%cython\n", "#cython: boundscheck=False\n", "\n", "cimport numpy as np\n", "import numpy as np\n", "\n", "\n", "def hid_beta_f(int ngates, float[:] x_arr, float a, float b, float m):\n", " \"\"\"\n", " Beta function calculator\n", " ngates = Number of gates\n", " x_arr = Array to process\n", " a, b , m = Beta function parameters\n", " \"\"\"\n", "\n", " cdef:\n", " np.ndarray[np.float32_t, ndim=1] beta = np.zeros(ngates, dtype=np.float32)\n", " Py_ssize_t i\n", "\n", " for i in range(ngates):\n", " beta[i] = 1.0 / (1.0 + (((x_arr[i] - m) / a)**2.0)**b)\n", "\n", " return beta" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0, 1000)" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N = 1000\n", "test = hid_beta_f(N, 1.0 * np.arange(N, dtype='float32'), 100.0, 1.0, 500.0)\n", "plt.plot(test)\n", "plt.xlim(0, 1000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }