In [4]:
import numpy as np
from matplotlib import pyplot as plt
import os
import warnings
warnings.filterwarnings("ignore",category=FutureWarning)
import xarray as xr
from matplotlib.ticker import MultipleLocator, FormatStrFormatter

warnings.filterwarnings("ignore",message='invalid value encountered in less_equal')

%matplotlib inline

In [19]:
flight = '20150620'
ix = 5

pecanPrmF = '/Users/danstechman/GoogleDrive/PECAN-Data/' + flight + '_PECANparams.nc'
flFile = '/Users/danstechman/GoogleDrive/PECAN-Data/FlightLevelData/Processed/' + flight + '_FltLvl_Processed.nc'

pecanPrms = xr.open_dataset(pecanPrmF,decode_times=False)
startT = pecanPrms.startT.data
endT = pecanPrms.endT.data

# Pull out FL data
flData = xr.open_dataset(flFile,decode_times=False)
timeSecs_FL = flData.time_secs_FL.data
fl_tempC = flData.TA.data
fl_alt_mMSL = flData.Alt.data


 # Get start and end indices for FL variables within current spiral
strtMatch = min(timeSecs_FL, key=lambda x: abs(x - startT[ix]))
endMatch = min(timeSecs_FL, key=lambda x: abs(x - endT[ix]))
flStrtIx = np.squeeze(np.where(timeSecs_FL == strtMatch))
flEndIx = np.squeeze(np.where(timeSecs_FL == endMatch))

flAltSprl = fl_alt_mMSL[flStrtIx:flEndIx]
flTempCsprl = fl_tempC[flStrtIx:flEndIx]

flAltSprl_lte0 = flAltSprl[flTempCsprl <= 0]
flTempCsprl_lte0 = flTempCsprl[flTempCsprl <= 0]
flAltSprl_gt0 = flAltSprl[flTempCsprl > 0]
flTempCsprl_gt0 = flTempCsprl[flTempCsprl > 0]

In [8]:
finiteIx_lte0 = np.isfinite(flAltSprl_lte0) & np.isfinite(flTempCsprl_lte0)
pf_temp_lte0 = np.poly1d(np.polyfit(flAltSprl_lte0[finiteIx_lte0]/1000,flTempCsprl_lte0[finiteIx_lte0],  1))
tempLapse_lte0 = pf_temp_lte0(6) - pf_temp_lte0(5)
print(tempLapse_lte0)


-5.487003143991682

In [7]:
finiteIx_gt0 = np.isfinite(flAltSprl_gt0) & np.isfinite(flTempCsprl_gt0)
pf_temp_gt0 = np.poly1d(np.polyfit(flAltSprl_gt0[finiteIx_gt0]/1000,flTempCsprl_gt0[finiteIx_gt0],  1))
tempLapse_gt0 = pf_temp_gt0(6) - pf_temp_gt0(5)
print(tempLapse_gt0)


-8.609385444333888

In [ ]:


In [14]:
finiteIx_lte0 = np.isfinite(flAltSprl_lte0) & np.isfinite(flTempCsprl_lte0)
pf_temp_lte0 = np.poly1d(np.polyfit(flAltSprl_lte0[finiteIx_lte0]/1000,flTempCsprl_lte0[finiteIx_lte0],  1))
tempLapse_lte0 = pf_temp_lte0(6) - pf_temp_lte0(5)
print(tempLapse_lte0)


-5.535622010353443

In [15]:
finiteIx_gt0 = np.isfinite(flAltSprl_gt0) & np.isfinite(flTempCsprl_gt0)
pf_temp_gt0 = np.poly1d(np.polyfit(flAltSprl_gt0[finiteIx_gt0]/1000,flTempCsprl_gt0[finiteIx_gt0],  1))
tempLapse_gt0 = pf_temp_gt0(6) - pf_temp_gt0(5)
print(tempLapse_gt0)


-8.009107250885165

In [ ]:


In [17]:
finiteIx_lte0 = np.isfinite(flAltSprl_lte0) & np.isfinite(flTempCsprl_lte0)
pf_temp_lte0 = np.poly1d(np.polyfit(flAltSprl_lte0[finiteIx_lte0]/1000,flTempCsprl_lte0[finiteIx_lte0],  1))
tempLapse_lte0 = pf_temp_lte0(6) - pf_temp_lte0(5)
print(tempLapse_lte0)


-5.1384553616190765

In [18]:
finiteIx_gt0 = np.isfinite(flAltSprl_gt0) & np.isfinite(flTempCsprl_gt0)
pf_temp_gt0 = np.poly1d(np.polyfit(flAltSprl_gt0[finiteIx_gt0]/1000,flTempCsprl_gt0[finiteIx_gt0],  1))
tempLapse_gt0 = pf_temp_gt0(6) - pf_temp_gt0(5)
print(tempLapse_gt0)


-7.715049249971422

In [ ]:


In [20]:
finiteIx_lte0 = np.isfinite(flAltSprl_lte0) & np.isfinite(flTempCsprl_lte0)
pf_temp_lte0 = np.poly1d(np.polyfit(flAltSprl_lte0[finiteIx_lte0]/1000,flTempCsprl_lte0[finiteIx_lte0],  1))
tempLapse_lte0 = pf_temp_lte0(6) - pf_temp_lte0(5)
print(tempLapse_lte0)


-4.7663793844096745

In [21]:
finiteIx_gt0 = np.isfinite(flAltSprl_gt0) & np.isfinite(flTempCsprl_gt0)
pf_temp_gt0 = np.poly1d(np.polyfit(flAltSprl_gt0[finiteIx_gt0]/1000,flTempCsprl_gt0[finiteIx_gt0],  1))
tempLapse_gt0 = pf_temp_gt0(6) - pf_temp_gt0(5)
print(tempLapse_gt0)


-6.726111485039425