{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Matching Colin's Si values to Rich's salinity values" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import netCDF4 as nc\n", "import matplotlib.pyplot as plt\n", "import scipy.io as sio\n", "import pandas as pd\n", "import datetime\n", "import xarray as xr\n", "from salishsea_tools import tidetools, geo_tools, viz_tools\n", "from matplotlib.colors import LinearSegmentedColormap\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
" ], "text/plain": [ "" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import HTML\n", "\n", "HTML('''\n", "
''')\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "grid = nc.Dataset('/data/vdo/MEOPAR/NEMO-forcing/grid/bathymetry_201702.nc')\n", "bathy, X, Y = tidetools.get_bathy_data(grid)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "nutrients_2015 = pd.read_excel('/home/eolson/Desktop/PSFbottledata_CN_edits_EOCor.xlsx')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ctd_2015 = sio.loadmat('/ocean/rich/home/metro/venus_adcp/matlabPSF/CitSci_Final.mat')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2142,)\n" ] } ], "source": [ "ctd_data = ctd_2015[list(ctd_2015.keys())[3]]\n", "ctd_dtype = ctd_data.dtype\n", "ctddata = {n: ctd_data[n][0, 0] for n in ctd_dtype.names}\n", "ctd_times = ctd_data['mtime'][0,0][0,:]\n", "print(ctd_times.shape)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ctd_sals = ctd_data['sal'][0,0][:,:]\n", "ctd_depths = ctd_data['depth'][0,0][:,:]\n", "ctd_lons = ctd_data['long'][0,0][0,:]\n", "ctd_lats = ctd_data['lat'][0,0][0,:]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2142,)\n" ] } ], "source": [ "base = datetime.datetime(2000, 1, 1)\n", "py_ctd_times = np.array([base for i in range(2142)])\n", "print(py_ctd_times.shape)\n", "for n in range(2142):\n", " py_ctd_times[n] = ((datetime.datetime.fromordinal(int(ctd_times[n])))\n", " + datetime.timedelta(days=ctd_times[n]%1)\n", " - datetime.timedelta(days = 366))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "stations = nutrients_2015['station'].values\n", "days = np.array([pd.to_datetime(pd.Timestamp(d)) for d in nutrients_2015['date'].values])\n", "depths = nutrients_2015['depth'].values\n", "si = nutrients_2015['si'].values\n", "lons = nutrients_2015['lon'].values\n", "lats = nutrients_2015['lat'].values" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "False == 0" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [], "source": [ "stations = np.ma.masked_array(stations, mask = np.zeros((896)))\n", "for n in range(896):\n", " if stations[n][:2] != 'CB':\n", " stations.mask[n] = True" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [], "source": [ "days = np.ma.masked_array(days, mask = stations.mask)\n", "depths = np.ma.masked_array(depths, mask = stations.mask)\n", "si = np.ma.masked_array(si, mask = stations.mask)\n", "lons = np.ma.masked_array(lons, stations.mask)\n", "lats = np.ma.masked_array(lats, mask = stations.mask)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(2142,)" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "py_ctd_times.shape" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "masked_array(data = [2 20 20 20 --],\n", " mask = [False False False False True],\n", " fill_value = 999999)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "depths[:5]" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:11: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:12: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:13: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n" ] }, { "ename": "IndexError", "evalue": "index 2141 is out of bounds for axis 0 with size 896", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0msame_day_lons\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mctd_lons\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msame_day_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0msame_day_lats\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mctd_lats\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0ml\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ml\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msame_day_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mdepths\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0msame_day_sals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mctd_sals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ml\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ml\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msame_day_index\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/home/vdo/anaconda3/lib/python3.6/site-packages/numpy/ma/core.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, indx)\u001b[0m\n\u001b[1;32m 3156\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3157\u001b[0m \"\"\"\n\u001b[0;32m-> 3158\u001b[0;31m \u001b[0mdout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3159\u001b[0m \u001b[0;31m# We could directly use ndarray.__getitem__ on self.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3160\u001b[0m \u001b[0;31m# But then we would have to modify __array_finalize__ to prevent the\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mIndexError\u001b[0m: index 2141 is out of bounds for axis 0 with size 896" ] } ], "source": [ "si_to_use = np.array([])\n", "sal_to_use = np.array([])\n", "for i in range(896):\n", " same_day_index = np.array([])\n", " if days.mask[i] == False:\n", " for n in range(2142):\n", " if ((py_ctd_times[n].day == days[i].day) \n", " and (py_ctd_times[n].month == days[i].month)):\n", " same_day_index = np.append(same_day_index, n)\n", " if len(same_day_index) != 0:\n", " same_day_times = np.array([py_ctd_times[p] for p in same_day_index])\n", " same_day_lons = np.array([ctd_lons[m] for m in same_day_index])\n", " same_day_lats = np.array([ctd_lats[l] for l in same_day_index])\n", " if depths[n] == 2:\n", " same_day_sals = np.array([ctd_sals[0, l] for l in same_day_index])\n", " else:\n", " same_day_sals = np.array([ctd_sals[19, l] for l in same_day_index])\n", " a = np.argmin(np.abs(same_day_lats - lats[i]))\n", " b = np.argmin(np.abs(same_day_lons - lons[i]))\n", " if (a-b) == 0:\n", " si_to_use = np.append(si_to_use, n_si[i])\n", " depth_to_use = np.append(depth_to_use, n_depths[i])\n", " sal_to_use = np.append(sal_to_use, same_day_sals[a])" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:12: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:13: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:14: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:16: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n", "/home/vdo/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:18: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n" ] } ], "source": [ "si_to_use = np.array([])\n", "sal_to_use = np.array([])\n", "depth_to_use = np.array([])\n", "for i in range(896):\n", " same_day_index = np.array([])\n", " if days.mask[i] == False:\n", " for n in range(2142):\n", " if ((py_ctd_times[n].day == days[i].day) \n", " and (py_ctd_times[n].month == days[i].month)):\n", " same_day_index = np.append(same_day_index, n)\n", " if len(same_day_index) != 0:\n", " same_day_times = np.array([py_ctd_times[p] for p in same_day_index])\n", " same_day_lons = np.array([ctd_lons[m] for m in same_day_index])\n", " same_day_lats = np.array([ctd_lats[l] for l in same_day_index])\n", " if depths[i] == 2:\n", " same_day_sals = np.array([ctd_sals[0, l] for l in same_day_index])\n", " else:\n", " same_day_sals = np.array([ctd_sals[19, l] for l in same_day_index])\n", " a = np.argmin(np.abs(same_day_lats - lats[i]))\n", " b = np.argmin(np.abs(same_day_lons - lons[i]))\n", " if (a-b) == 0:\n", " si_to_use = np.append(si_to_use, si[i])\n", " depth_to_use = np.append(depth_to_use, depths[i])\n", " sal_to_use = np.append(sal_to_use, same_day_sals[a])" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nz1pr70mnvQnyNdrsa1jXx+NV1fYkdyf5ntbasbXP9dxfa+10m03xPT/Jy6vqJU95vtvequrrkjzW\nWjvydK/pub8kXzH/3f3NzDb5fOXaJzvv7cokL0vyr1trL03yyTxlOrbz/lJV25J8Q5JffOpzvfY2\n3/b9jZl9Efv8JFdV1WvXvqan3gR58odVdV2SzJePLbiei1ZVWzML8btaa/fMV4+mvyRprf1pkkOZ\n7eswlt5emeQbquqRJAeS3FJVb8tI+puPftJaeyyzbawvz0h6S/L7SX5/PkOUJL+UWbCPpb9k9gXs\nvtbaH84fj6G3v57kd1trf9RaeyLJPUm+PJ32JsiTX0ny+vn912e2bbk7VVVJ3pLk4dbaHWue6r6/\nqnpeVV0zv//szLb9fzgj6C1JWms/2Fp7fmttZ2ZTmL/WWnttRtBfVV1VVc89ez+z7ZAfygh6S5LW\n2h8k+b2qetF81d4kD2Uk/c397Tw5rZ6Mo7ePJXlFVT1n/r9zb2Y7KXbZ26Y6s1tVvT3JamaXqvvD\nJP80yS8neUeSL8jsUqnf3Fr740XVeLGq6iuS/HqSB/PkdtY3ZradvOv+qupLk7w1sz1Lr0jyjtba\nj1TV56Tz3p6qqlaTfG9r7evG0F9VvTCzUXgym4b+j621HxtDb2dV1U1Jfj7JtiT/O8m3Z/53ms77\nm3/5+liSF7bW/my+bhS/u/lhrN+S2RE/v5nkO5NsT4e9baogB4CxMbUOAB0T5ADQMUEOAB0T5ADQ\nMUEOAB0T5MD/p6p+aH5VqN+aX/Xqy+anHn3xomsDPp3Dz4C/VFUrSe5IstpaO1FV1ybZ1lr7+IJL\nA56GETmw1nVJHm+tnUiS1trjrbWPV9Wkqm5e52eBBRDkwFrvSXJDVf1OVf1MVX3VogsCzk+QA3+p\ntXY8ye4kt2Z2ec5fqKpvW2hRwHlduegCgOXSWjudZJJkUlUP5smLSABLyIgc+EtV9aKq+qI1q27K\n7OIRwJIyIgfW2p7kp+eXjT2V5H9lNs3+SwutCnhaDj8DgI6ZWgeAjglyAOiYIAeAjglyAOiYIAeA\njglyAOiYIAeAjv0/xnj33n2sW7kAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize = (8,8))\n", "ax.plot(si_to_use, sal_to_use, 'b.')\n", "ax.grid('on')\n", "ax.set_xlabel('Si')\n", "ax.set_ylabel('Salinity')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.0" } }, "nbformat": 4, "nbformat_minor": 2 }