{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d1c2ff28-7542-4241-9566-49f7843db931",
   "metadata": {},
   "source": [
    "# Under ice chlorophyll-a, oxygen and nitrate analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d3df5610-8b2c-4494-89ac-6e76806243ed",
   "metadata": {},
   "source": [
    "### Import packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "97d0f203-5814-4e0d-b392-09f144c63996",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.dates as mdates\n",
    "import glob\n",
    "import seawater as sw\n",
    "from soccom_functions import *\n",
    "import pickle \n",
    "import datetime\n",
    "import xarray as xr\n",
    "import pandas as pd \n",
    "import plotly.graph_objs as go\n",
    "import cmocean\n",
    "from pandas.plotting import register_matplotlib_converters\n",
    "register_matplotlib_converters()\n",
    "%matplotlib inline \n",
    "#!pip install PyAstronomy\n",
    "from PyAstronomy import pyasl"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf0ccd69-3748-4249-9f14-34f0eec3de6c",
   "metadata": {},
   "source": [
    "# All floats\n",
    "## Define functions for loop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1ff00b5c-161d-4a4b-b20f-9efb886d5b1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# calculate the vertically integrated data column inventory using the composite trapezoidal rule\n",
    "def integrate(zi, data, depth_range):\n",
    "    n_profs = len(data)\n",
    "    zi_start = abs(zi - depth_range[0]).argmin() # find location of start depth\n",
    "    zi_end =  abs(zi - depth_range[1]).argmin() # find location of end depth\n",
    "    zi_struct = np.ones((n_profs, 1)) * zi[zi_start : zi_end] # add +1 to get the 200m value\n",
    "    data = data[:, zi_start : zi_end] # add +1 to get the 200m value\n",
    "    col_inv = []\n",
    "    for n in range(0, len(data)):\n",
    "        col_inv.append(np.trapz(data[n,:][~np.isnan(data[n,:])], zi_struct[n,:][~np.isnan(data[n,:])]))\n",
    "    return col_inv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b47f5317-e51c-4f6e-927a-a03e4a0802a5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# calculate the vertically integrated data column inventory using the composite trapezoidal rule\n",
    "def integrate_wMLD(zi, data, start_depth, MLD):\n",
    "    #n_profs = len(data)\n",
    "    zi_start = abs(zi - start_depth).argmin() # find index of start depth\n",
    "    zi_end =  abs(zi - MLD).argmin() # find index of end depth\n",
    "    zi_struct = zi[zi_start : zi_end] # add +1 to get the 200m value\n",
    "    data = data[zi_start : zi_end] # add +1 to get the 200m value\n",
    "    col_inv = []\n",
    "    #for n in range(0, len(data)):\n",
    "    col_inv.append(np.trapz(data[:][~np.isnan(data[:])], zi_struct[:][~np.isnan(data[:])]))\n",
    "    return col_inv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "56248229-bbd9-4db0-a3c3-c69c42a6bfd2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def integrate_chl(data):\n",
    "    # Interpolate/get data set up\n",
    "    zi = np.arange(0, 2005, 5) # 5 = 400 depth intervals between 0m to 2000m\n",
    "    #or zi=self.gr[\"depth\"] #which = np.arange(0,2000+dz,dz)\n",
    "    chl_int = FLOAT.gr[\"Chl_a\"] # interpolated chl values across zi depth intervals for all profiles\n",
    "    \n",
    "    ### Using a fixed lower limit\n",
    "    # Integrate chl - total chl in upper 200m\n",
    "    upperlim=0\n",
    "    lowerlim=200\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'] = np.array(integrate(zi, chl_int.T, [upperlim, lowerlim])) # integrate interpolated nitrate values between 0m-200m \n",
    "    \n",
    "    ### Using the deepest MLD seen by the float\n",
    "    # Integrate chl - total chl in upper ML - to deepest MLD seen by float\n",
    "    upperlim=0\n",
    "    lowerlim=np.nanmax(FLOAT.gr[\"mld\"])\n",
    "    print(FLOAT.gr[\"WMO_code\"],\"Deepest mixed layer: %1.0f m\"%(lowerlim))\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr_dMLD'] = np.array(integrate(zi, chl_int.T, [upperlim, lowerlim])) # integrate interpolated nitrate values between 0m-200m \n",
    "\n",
    "    ### Using the profile specific MLD\n",
    "    H2=FLOAT.gr[\"mld\"]\n",
    "    nz= len(H2)\n",
    "    # using MLD calculated for each individual profile\n",
    "    chl_T=chl_int.T # the interpolated chl from FLOAT.gr\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['dint_chla'] = np.full( nz, np.nan )\n",
    "    for i in range(nz): #nz = length H2 (mld array) = number of profiles\n",
    "        if np.isnan(H2[i]):\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]]['dint_chla'][i] = np.nan # in float used to write code, there were some nan for MLD because of no salinity values recorded\n",
    "        else:\n",
    "            lowerlim=H2[i]\n",
    "            data=chl_T[i,:]\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]]['dint_chla'][i] = np.array(integrate_wMLD(zi, data, upperlim, lowerlim)) # integrate interpolated nitrate values between 0m-specificMLD\n",
    "    \n",
    "    ### The entire water column\n",
    "    upperlim=0\n",
    "    lowerlim=2000\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intrWC'] = np.array(integrate(zi, chl_int.T, [upperlim, lowerlim])) # integrate interpolated nitrate values between 0m-200m \n",
    "    \n",
    "    return AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'],AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr_dMLD'],AllFloats[FLOAT.gr[\"WMO_code\"]]['dint_chla'],AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intrWC']\n",
    "    #or return AllFloats                                      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0b786588-d0d3-4daa-a280-c19f314d9fc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def chl_underornoice(data,yix):\n",
    "    H2=FLOAT.gr[\"mld\"]\n",
    "    nz= len(H2)\n",
    "    ## How much of the annual chl was present under ice?\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno']=np.full(nz, np.nan)\n",
    "    for i in range(nz):\n",
    "        test=np.isnan(FLOAT.gr[\"Chl_a\"][0,i]) & np.isnan(FLOAT.gr[\"Chl_a\"][1,i]) & np.isnan(FLOAT.gr[\"Chl_a\"][2,i]) #& np.isnan(FLOAT.gr[\"Chl_a\"][3,i]) #& np.isnan(FLOAT.gr[\"Chl_a\"][4,i]) #& np.isnan(FLOAT.gr[\"Chl_a\"][5,i])\n",
    "        temp_thres=FLOAT.gr[\"Temperature\"][0:4,i]<(-1.78)\n",
    "        if test:\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno'][i]=1\n",
    "        else:\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno'][i]=0\n",
    "    #### Over the whole float timeseries\n",
    "    ui=np.where(np.isnan(FLOAT.gr[\"Chl_a\"][0,:]) & np.isnan(FLOAT.gr[\"Chl_a\"][1,:]) & np.isnan(FLOAT.gr[\"Chl_a\"][2,:]) & np.isnan(FLOAT.gr[\"Chl_a\"][3,:])) #& np.isnan(FLOAT.gr[\"Chl_a\"][4,i]) #& np.isnan(FLOAT.gr[\"Chl_a\"][5,i])\n",
    "    ui_tot=np.nansum(AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr_dMLD'][ui])\n",
    "    nui=np.where(np.isfinite(FLOAT.gr[\"Chl_a\"][0,:]) & np.isnan(FLOAT.gr[\"Chl_a\"][1,:]) & np.isnan(FLOAT.gr[\"Chl_a\"][2,:]) & np.isnan(FLOAT.gr[\"Chl_a\"][3,:])) #& np.isnan(FLOAT.gr[\"Chl_a\"][4,i]) #& np.isnan(FLOAT.gr[\"Chl_a\"][5,i])\n",
    "    nui_tot=np.nansum(AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr_dMLD'][test])\n",
    "    #print(np.nansum(chl_intr_dMLD))\n",
    "    #print('approx % of chl under ice during float timeseries:', round(ui_tot/nui_tot*100,2),'%')\n",
    "    \n",
    "    #### get index for profiles that are in austral year, under ice and ice free\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"]=[]\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"]=[]\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"]=[]\n",
    "    for i in range(len(FLOAT.gr[\"date_dt\"])):\n",
    "        decy = pyasl.decimalYear(FLOAT.gr[\"date_dt\"][i]) #might be more efficient to make decy an np.int_ here so all the logical queries can be called at once?...\n",
    "        smol=decy>=(yix-0.5)\n",
    "        tol=decy<(yix+0.5)\n",
    "        underice=AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno'][i]>0\n",
    "        icefree=AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno'][i]==0\n",
    "        if smol==tol:\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"]=np.append(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"],np.int_(i))\n",
    "        if smol==tol==underice:\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"]=np.append(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"],i)\n",
    "        if smol==tol==icefree:\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"]=np.append(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"],i)\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"]=np.int_(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"])\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"]=np.int_(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"])\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"]=np.int_(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"])\n",
    "    # pos exlude years with <34 profiles from next lot of calculations?\n",
    "    ### Calculate how much Chl is present at specific times - whole year, under ice, when there's no ice\n",
    "    #could add if rule: if len(AllFloats['5904472'][endyear][\"aust_ix\"])<34: continue... or [] =np.nan\n",
    "    #### Total in austral year\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]=np.round(np.nansum(AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'][AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"]]),6)\n",
    "    #### Total under ice\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_underice_chl\"]=np.round(np.nansum(AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'][AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"]]),6)\n",
    "    #### Total when ice-free\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_icefree_chl\"]=np.round(np.nansum(AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'][AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"]]),6)\n",
    "    #### proportion under ice for austral year\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_underice\"]=AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_underice_chl\"]/AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_icefree\"]=AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_icefree_chl\"]/AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]\n",
    "    #### Mean [Chl] in WC\n",
    "    #AllFloats['5904472'][yix][\"Mean_aus_chl\"]=np.round(np.nanmean(chl_intrWC[AllFloats['5904472'][yix][\"aust_ix\"]]),6)\n",
    "    #for yix in range(startyear,endyear+1,1):\n",
    "    print(yix,\"under ice\",np.round(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_underice\"],3))\n",
    "    #for yix in range(startyear,endyear+1,1):\n",
    "    #    print(yix,\"ice free\",np.round(AllFloats['5904472'][yix][\"Prop_icefree\"],3))\n",
    "    \n",
    "    #return AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno'],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"aust_ix\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"underice_ix\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"icefree_ix\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_underice_chl\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_icefree_chl\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_underice\"],AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_icefree\"]\n",
    "    return AllFloats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "1f8a2ccf-4e20-4150-9a24-55c807afe33f",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def nosat_chl(data,yix):\n",
    "    ## What is happening to the chl when the satellite isn't seeing the ice-free waters (from ~mid March)?\n",
    "    Mar3015=datetime.datetime(2015,3,30)\n",
    "    decmar15=pyasl.decimalYear(Mar3015)\n",
    "    Mar2116=datetime.datetime(2016,3,21)\n",
    "    decmar16=pyasl.decimalYear(Mar2116)\n",
    "    Mar2217=datetime.datetime(2017,3,22)\n",
    "    decmar17=pyasl.decimalYear(Mar2217)\n",
    "    Mar1418=datetime.datetime(2018,3,14)\n",
    "    decmar18=pyasl.decimalYear(Mar1418)\n",
    "    Mar1419=datetime.datetime(2019,3,14)\n",
    "    decmar19=pyasl.decimalYear(Mar1419)\n",
    "    Mar2120=datetime.datetime(2020,3,21)\n",
    "    decmar20=pyasl.decimalYear(Mar2120)\n",
    "\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"no_sat\"]=[]\n",
    "    for i in range(len(FLOAT.gr[\"date_dt\"])):\n",
    "        decy = pyasl.decimalYear(FLOAT.gr[\"date_dt\"][i])\n",
    "        smol=decy>=(yix-0.5)\n",
    "        tol=decy<(yix+0.5)\n",
    "        icefree=AllFloats[FLOAT.gr[\"WMO_code\"]]['underice_yesno'][i]==0\n",
    "        if yix==2015:\n",
    "            mar=decy>decmar15\n",
    "        elif yix==2016:\n",
    "            mar=decy>decmar16\n",
    "        elif yix==2017:\n",
    "            mar=decy>decmar17\n",
    "        elif yix==2018:\n",
    "            mar=decy>decmar18\n",
    "        elif yix==2019:\n",
    "            mar=decy>decmar19\n",
    "        elif yix==2020:\n",
    "            mar=decy>decmar20\n",
    "        elif yix==2021:\n",
    "            continue\n",
    "        if smol==tol==icefree==mar:\n",
    "            AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"no_sat\"]=np.append(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"no_sat\"],i)\n",
    "        AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"no_sat\"]=np.int_(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"no_sat\"])\n",
    "    \n",
    "    #could add if rule: if len(AllFloats['5904472'][endyear][\"aust_ix\"])<34: continue... or [] =np.nan\n",
    "    #### Total chl when satellite field of view reduces during March, but before ice returns\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_nosat_chl\"]=np.round(np.nansum(AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'][AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"no_sat\"]]),6)\n",
    "    #### proportion under ice for austral year\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_nosat\"]=AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_nosat_chl\"]/AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]\n",
    "    print(yix,\"no satellite coverage\",np.round(AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_nosat\"],3))\n",
    "    return AllFloats"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56224f2f-436b-45e7-866b-3fe933f36c18",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Read in all floats from a directory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "83c2b6d5-449f-4d32-af47-4ec5745fb8e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['../../data/raw/WGfloats\\\\5904397_HRQC.nc', '../../data/raw/WGfloats\\\\5904467_HRQC.nc', '../../data/raw/WGfloats\\\\5904468_HRQC.nc', '../../data/raw/WGfloats\\\\5904471_HRQC.nc', '../../data/raw/WGfloats\\\\5904472_HRQC.nc', '../../data/raw/WGfloats\\\\5905991_HRQC.nc', '../../data/raw/WGfloats\\\\5905992_HRQC.nc', '../../data/raw/WGfloats\\\\5905993_HRQC.nc', '../../data/raw/WGfloats\\\\5905994_HRQC.nc', '../../data/raw/WGfloats\\\\5905995_HRQC.nc', '../../data/raw/WGfloats\\\\5906033_HRQC.nc', '../../data/raw/WGfloats\\\\5906034_HRQC.nc']\n"
     ]
    }
   ],
   "source": [
    "#reads float data\n",
    "file_folder = \"../../data/raw/WGfloats/\" # specify directory relative to location of notebook\n",
    "\n",
    "files = sorted(glob.glob(file_folder+\"/*.nc\"))\n",
    "print(files)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "1bdcc336-0be9-4655-903a-4cb5c22d240a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Clara Douglas\\OneDrive - University of Southampton\\PhD\\Projects\\net_community_production\\notebooks\\FromBieito\\soccom_functions.py:338: RuntimeWarning: Mean of empty slice\n",
      "  self.gr[\"LT\"][j,i] = np.nanmean(disp[jj]**2)**0.5\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5904397 Deepest mixed layer: 142 m\n",
      "2015 under ice 0.027\n",
      "2015 no satellite coverage 0.182\n",
      "2016 under ice 0.161\n",
      "2016 no satellite coverage 0.232\n",
      "2017 under ice 0.102\n",
      "2017 no satellite coverage 0.263\n",
      "2018 under ice 0.1\n",
      "2018 no satellite coverage 0.284\n",
      "2019 under ice 0.153\n",
      "2019 no satellite coverage 0.293\n",
      "2020 under ice 0.158\n",
      "2020 no satellite coverage 0.0\n",
      "5904467 Deepest mixed layer: 141 m\n",
      "2014 under ice nan\n",
      "2014 no satellite coverage nan\n",
      "2015 under ice 0.022\n",
      "2015 no satellite coverage 0.105\n",
      "2016 under ice 0.117\n",
      "2016 no satellite coverage 0.124\n",
      "2017 under ice 0.123\n",
      "2017 no satellite coverage 0.172\n",
      "2018 under ice 0.115\n",
      "2018 no satellite coverage 0.309\n",
      "2019 under ice 0.11\n",
      "2019 no satellite coverage 0.207\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\CLARAD~1\\AppData\\Local\\Temp/ipykernel_16916/2337655266.py:50: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_underice\"]=AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_underice_chl\"]/AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]\n",
      "C:\\Users\\CLARAD~1\\AppData\\Local\\Temp/ipykernel_16916/2337655266.py:51: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_icefree\"]=AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_icefree_chl\"]/AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]\n",
      "C:\\Users\\CLARAD~1\\AppData\\Local\\Temp/ipykernel_16916/3173334589.py:44: RuntimeWarning: invalid value encountered in double_scalars\n",
      "  AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Prop_nosat\"]=AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_nosat_chl\"]/AllFloats[FLOAT.gr[\"WMO_code\"]][yix][\"Tot_aus_chl\"]\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32mC:\\Users\\CLARAD~1\\AppData\\Local\\Temp/ipykernel_16916/3797416057.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mf_ix\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfiles\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m     \u001b[0mFLOAT\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgrids_one_buoy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfiles\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mf_ix\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdisplay_info\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mDO_ml_crit\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m2.5\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mclear_short\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      6\u001b[0m     \u001b[0mAllFloats\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mFLOAT\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"WMO_code\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[0mAllFloats\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mFLOAT\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"WMO_code\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'dates_dt'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mFLOAT\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"date_dt\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\OneDrive - University of Southampton\\PhD\\Projects\\net_community_production\\notebooks\\FromBieito\\soccom_functions.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, filename, **kargs)\u001b[0m\n\u001b[0;32m    307\u001b[0m             \u001b[0mmsk\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m~\u001b[0m\u001b[1;33m(\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misnan\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mPgr\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mCTgr\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mSAgr\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mSTgr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    308\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m>\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 309\u001b[1;33m                 \u001b[0mhtml\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mHolteAndTalley\u001b[0m\u001b[1;33m(\u001b[0m \u001b[0mPgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mmsk\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mCTgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mmsk\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSAgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mmsk\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSTgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mmsk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    310\u001b[0m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgr\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"mld_HT\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhtml\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdensityMLD\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    311\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mC:\\anaconda\\anaconda3\\envs\\argo_ncp\\lib\\site-packages\\holteandtalley\\handt.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, pressures, temperatures, salinities, densities)\u001b[0m\n\u001b[0;32m      8\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtempMLD\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtemp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfindMLD\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      9\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0msalinities\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mdensities\u001b[0m \u001b[1;33m!=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 10\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msalinity\u001b[0m \u001b[1;33m=\u001b[0m  \u001b[0msalinityProfile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpressures\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtemperatures\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msalinities\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdensities\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtemp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     11\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msalinityMLD\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msalinity\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfindMLD\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     12\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdensity\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdensityProfile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpressures\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtemperatures\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msalinities\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdensities\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtemp\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msalinity\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mC:\\anaconda\\anaconda3\\envs\\argo_ncp\\lib\\site-packages\\holteandtalley\\salinityProfile.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, pressures, temperatures, salinities, densities, tp)\u001b[0m\n\u001b[0;32m     22\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mSGradientMaxPressure\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpressures\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mSGradientMax\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     23\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMLTFITSalinity\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMLTFITSalinityPressure\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculateMLTFIT\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msalinities\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msalinityGradients\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 24\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMLTFITDensity\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMLTFITDensityPressure\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculateMLTFIT\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdensities\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdensityGradients\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     25\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDThreshold\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcalculateDThreshold\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     26\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDThresholdPressure\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minterpolateDThreshold\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m2.0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mC:\\anaconda\\anaconda3\\envs\\argo_ncp\\lib\\site-packages\\holteandtalley\\profile.py\u001b[0m in \u001b[0;36mcalculateMLTFIT\u001b[1;34m(self, values, gradients)\u001b[0m\n\u001b[0;32m     30\u001b[0m         \u001b[1;31m#iterate through and polyfit over progressively increasing points\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     31\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mnum\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpressures\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 32\u001b[1;33m             \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpolyfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpressures\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfull\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     33\u001b[0m             \u001b[0mfits\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mout\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     34\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mout\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mpolyfit\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "\u001b[1;32mC:\\anaconda\\anaconda3\\envs\\argo_ncp\\lib\\site-packages\\numpy\\lib\\polynomial.py\u001b[0m in \u001b[0;36mpolyfit\u001b[1;34m(x, y, deg, rcond, full, w, cov)\u001b[0m\n\u001b[0;32m    658\u001b[0m     \u001b[0mscale\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mNX\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlhs\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mlhs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    659\u001b[0m     \u001b[0mlhs\u001b[0m \u001b[1;33m/=\u001b[0m \u001b[0mscale\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 660\u001b[1;33m     \u001b[0mc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mresids\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrank\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlstsq\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlhs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrhs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrcond\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    661\u001b[0m     \u001b[0mc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mT\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mscale\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mT\u001b[0m  \u001b[1;31m# broadcast scale coefficients\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    662\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mlstsq\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "\u001b[1;32mC:\\anaconda\\anaconda3\\envs\\argo_ncp\\lib\\site-packages\\numpy\\linalg\\linalg.py\u001b[0m in \u001b[0;36mlstsq\u001b[1;34m(a, b, rcond)\u001b[0m\n\u001b[0;32m   2324\u001b[0m     \u001b[0ms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult_real_t\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2325\u001b[0m     \u001b[0mresids\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresids\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult_real_t\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2326\u001b[1;33m     \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult_t\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m  \u001b[1;31m# Copying lets the memory in r_parts be freed\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2327\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mwrap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwrap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresids\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrank\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2328\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "#make structure for floats \n",
    "AllFloats = {}\n",
    "\n",
    "for f_ix in range(0,len(files)):\n",
    "    FLOAT = grids_one_buoy(files[f_ix],display_info = False, DO_ml_crit = 2.5, clear_short = True)\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]] = {}\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['dates_dt']=FLOAT.gr[\"date_dt\"]\n",
    "    #upperlim=0\n",
    "    #lowerlim=np.nanmax(FLOAT.gr[\"mld\"])\n",
    "    #print(FLOAT.gr[\"WMO_code\"],\"Deepest mixed layer: %1.0f m\"%(lowerlim))\n",
    "    AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr200'],AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intr_dMLD'],AllFloats[FLOAT.gr[\"WMO_code\"]]['dint_chla'],AllFloats[FLOAT.gr[\"WMO_code\"]]['chl_intrWC']=integrate_chl(FLOAT)\n",
    "    \n",
    "    ##### Get year range\n",
    "    startyear=FLOAT.gr[\"date_dt\"][0].year\n",
    "    endyear=FLOAT.gr[\"date_dt\"][-1].year\n",
    "    #print(startyear, '-', endyear)\n",
    "    for yix in range(startyear,endyear+1,1):\n",
    "        AllFloats[FLOAT.gr[\"WMO_code\"]][yix] ={}\n",
    "        AllFloats=chl_underornoice(FLOAT,yix)\n",
    "        AllFloats=nosat_chl(FLOAT,yix)\n",
    "\n",
    "#display(AllFloats)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.9.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
