예제 #1
0
    'Lat': [np.NaN],
    'Lon': [np.NaN],
    'O2Inv': [np.NaN],
    'O2EqInv': [np.NaN]
})
tic1 = time.time()
for i in np.arange(len(ArgoWMO)):
    #for i in [16]:
    tic2 = time.time()

    dac = FileNames[i].split('/')[0]
    WMO = ArgoWMO[i]

    print('\n%%% ', WMO, ' %%%\n')
    print(i, ' Floats completed; ', len(ArgoWMO) - i, ' Floats Left')
    f = RF.ArgoDataLoader(DAC=dac, WMO=WMO)

    # Make sure float measures oxygen
    float_vars = list(f.keys())
    float_vars = np.array(float_vars)
    oxy_check = np.where(float_vars == 'DOXY')

    flux_profcount = 0

    if oxy_check[0].size != 0:

        # Load float data and determine if use adjusted or not adjusted data
        [pres, pres_QC,
         pres_flag] = RF.DetermineAdjusted(raw_data=f.PRES.values,
                                           raw_data_QC=f.PRES_QC.values,
                                           a_data=f.PRES_ADJUSTED.values,
예제 #2
0
import numpy as np
import pandas as pd
import gsw
import RandomFxns as RF
import BCClassFxns as BCF
import time
import cmocean.cm as cmo
import glob
import cartopy as ct
from cartopy.mpl.ticker import (LongitudeFormatter, LatitudeFormatter)
import matplotlib.gridspec as gridspec
import scipy.integrate as integrate

OFiles = glob.glob(
    '/Users/Ellen/Documents/GitHub/BGCArgo_BCGyre/CSVFiles/OverlapFiles_BC/*')
WMODacDict = RF.WMODacPair()

#iso = [27.70, 27.75, 27.80,27.85]
iso = [27.70, 27.725, 27.75, 27.775]
# Interpolate to same space and time steps

# Calculate MLD at each point

good_QC = [1, 2, 5, 8]

lat_N = 70.000
lat_S = 48.00
lon_E = -45.00
lon_W = -70.00

figx = 10
예제 #3
0
CheckFloats = pd.DataFrame({'FloatType': BC_List, 'FloatDir': BC_CheckList})
CheckFloats = CheckFloats.append(
    pd.DataFrame({
        'FloatType': Gyre_List,
        'FloatDir': Gyre_CheckList
    }))

df_count = 0
## Load Float data
for i in np.arange(CheckFloats.shape[0]):
    fline = CheckFloats.iloc[i, 1]
    dac = fline.split('/')[0]
    wmo = fline.split('/')[1]

    data = RF.ArgoDataLoader(DAC=dac, WMO=wmo)

    lat = data.LATITUDE.values
    lon = data.LONGITUDE.values

    dates = data.JULD.values
    date_reform = [[]] * dates.shape[0]
    bad_index = []
    for j in np.arange(len(date_reform)):
        if np.isnat(dates[j]) == False:
            date_reform[j] = datetime.fromisoformat(str(dates[j])[:-3])
        else:
            date_reform[j] = dates[j]
            bad_index = bad_index + [j]

    if len(bad_index) > 0:
예제 #4
0
 MeanData=AllData.groupby(by='Date').mean()
 StdData=AllData.groupby(by='Date').std()
 
 date_list=MeanData.index.values.tolist()
 FirstDate=date_list[0]
 LastDate=date_list[-1]
 
 # Get full range of dates in between first and last profile date
 AllDates_df=pd.date_range(str(FirstDate),str(LastDate),freq='6H')
 AllDates=[[]]*len(AllDates_df)
 for i in np.arange(len(AllDates)):
     AllDates[i]=str(AllDates_df[i])
 AllDates=np.array(AllDates)
 
 # Go through dates and match data to correct time period
 MeanData = RF.MatchData2Dates(alldates=AllDates, dates=date_list, Data=MeanData)
 
 #     ## N16 ##
 # Ft_N16=np.zeros(len(AllDates_df))
 # Ft_N16[:]=np.NaN
 # Fd_N16=np.zeros(len(AllDates_df))
 # Fd_N16[:]=np.NaN
 # Fp_N16=np.zeros(len(AllDates_df))
 # Fp_N16[:]=np.NaN
 # Fc_N16=np.zeros(len(AllDates_df))
 # Fc_N16[:]=np.NaN
 
 # ## L13 ##
 # Ft_L13=np.zeros(len(AllDates_df))
 # Ft_L13[:]=np.NaN
 # Fd_L13=np.zeros(len(AllDates_df))
예제 #5
0
pres_range=np.arange(0,2001,step_size)

refdate=datetime(1990,1,1)

TSOsat=pd.DataFrame({'WMO': [np.NaN],'Date':[np.NaN],'Lat':[np.NaN],'Lon': [np.NaN],'Pres':[np.NaN],'Temp':[np.NaN],'Sal':[np.NaN],'Oxy':[np.NaN],'OxySat':[np.NaN],'Sigma0':[np.NaN]})
tic1=time.time()
for i in np.arange(len(ArgoWMO)):
#for i in [43]:
    tic2=time.time()
    
    dac=FileNames[i].split('/')[0]
    WMO=ArgoWMO[i]
    
    print('\n%%% ',WMO,' %%%\n')
    print(i, ' Floats completed; ', len(ArgoWMO)-i,' Floats Left')
    f = RF.ArgoDataLoader(DAC=dac, WMO=WMO)
    
    # Make sure float measures oxygen
    float_vars=list(f.keys())
    float_vars=np.array(float_vars)
    oxy_check = np.where(float_vars=='DOXY')
    
    flux_profcount=0
    
    if oxy_check[0].size != 0:

        # Load float data and determine if use adjusted or not adjusted data
        [pres, pres_QC, pres_flag]=RF.DetermineAdjusted(raw_data=f.PRES.values,raw_data_QC=f.PRES_QC.values,a_data=f.PRES_ADJUSTED.values, a_data_QC=f.PRES_ADJUSTED_QC.values)
        [temp, temp_QC, temp_flag]=RF.DetermineAdjusted(raw_data=f.TEMP.values, raw_data_QC= f.TEMP_QC.values,a_data=f.TEMP_ADJUSTED.values, a_data_QC=f.TEMP_ADJUSTED_QC.values)
        [sal, sal_QC, sal_flag]=RF.DetermineAdjusted(raw_data=f.PSAL.values, raw_data_QC=f.PSAL_QC.values,a_data=f.PSAL_ADJUSTED.values,a_data_QC=f.PSAL_ADJUSTED_QC.values)
        [doxy, doxy_QC, doxy_flag]=RF.DetermineAdjusted(raw_data=f.DOXY.values, raw_data_QC=f.DOXY_QC.values,a_data=f.DOXY_ADJUSTED.values,a_data_QC=f.DOXY_ADJUSTED_QC.values)
    'Fp_N16': [np.NaN],
    'Fc_N16': [np.NaN],
    'Fd_N16': [np.NaN],
    'Ft_N16': [np.NaN]
})

for i in np.arange(len(ArgoWMO)):
    #for i in [124]:
    tic2 = time.time()

    dac = ArgoDac[i]
    WMO = ArgoWMO[i]

    print('\n%%% ', WMO, ' %%%\n')
    print(i, ' Floats completed; ', len(ArgoWMO) - i, ' Floats Left')
    f = RF.ArgoDataLoader(DAC=dac, WMO=WMO)

    # Make sure float measures oxygen
    float_vars = list(f.keys())
    float_vars = np.array(float_vars)
    oxy_check = np.where(float_vars == 'DOXY')

    flux_profcount = 0

    if oxy_check[0].size != 0:

        # Load float data and determine if use adjusted or not adjusted data
        [pres, pres_QC,
         pres_flag] = RF.DetermineAdjusted(raw_data=f.PRES.values,
                                           raw_data_QC=f.PRES_QC.values,
                                           a_data=f.PRES_ADJUSTED.values,
예제 #7
0
else:
    MaxDate = AllDates_BC[-1]

dates_total_df = pd.date_range(str(MinDate), str(MaxDate), freq='6H')
dates_total = [[]] * len(dates_total_df)
for i in np.arange(len(dates_total_df)):
    dates_total[i] = str(dates_total_df[i])
dates_total = np.array(dates_total)

######### BC #########
#L13_reform,L13_24hr_reform,L13_1wk_reform,N16_reform,N16_24hr_reform,N16_1wk_reform
#  #[L13_reform=BC_L13, L13_24hr_reform=BC_L13_24hr, L13_1wk_reform=BC_L13_1wk, N16_reform=BC_N16, N16_24hr_reform=BC_N16_24hr, N16_1wk_reform=BC_N16_1wk]
# [BC_L13, BC_L13_24hr, BC_L13_1wk, BC_N16, BC_N16_24hr, BC_N16_1wk]=RF.MatchData2Dates(alldates=dates_total, dates=date_list_BC, L13=Ft_L13_BC, L13_24hr=Ft_L13_24hr_BC, L13_1wk=Ft_L13_1wk_BC,
#                                                                                      N16=Ft_N16_BC, N16_24hr=Ft_N16_24hr_BC , N16_1wk=Ft_N16_1wk_BC)
BC_Data_ref = RF.MatchData2Dates(alldates=dates_total,
                                 dates=date_list_BC,
                                 Data=Mean_BCData)

######### LSG #########
# [LSG_L13, LSG_L13_24hr, LSG_L13_1wk, LSG_N16, LSG_N16_24hr, LSG_N16_1wk]=RF.MatchData2Dates(alldates=dates_total, dates=date_list_G, L13=Ft_L13_G, L13_24hr=Ft_L13_24hr_G, L13_1wk=Ft_L13_1wk_G,
#                                                                                       N16=Ft_N16_G, N16_24hr=Ft_N16_24hr_G , N16_1wk=Ft_N16_1wk_G)
LSG_Data_ref = RF.MatchData2Dates(alldates=dates_total,
                                  dates=date_list_G,
                                  Data=Mean_GData)

BC_L13 = BC_Data_ref.loc[:, 'Ft_L13']
BC_N16 = BC_Data_ref.loc[:, 'Ft_N16']
LSG_L13 = LSG_Data_ref.loc[:, 'Ft_L13']
LSG_N16 = LSG_Data_ref.loc[:, 'Ft_N16']

## Moving Averages ##
예제 #8
0
    34.91199875, 34.9109993, 34.90800095, 34.90800095, 34.9090004, 34.90999985,
    34.9109993, 34.9109993, 34.91199875, 34.9129982, 34.9129982, 34.9109993,
    34.90999985, 34.91199875, 34.9129982, 34.91500092, 34.91500092, np.NaN
])
T = np.array([
    np.NaN, np.NaN, np.NaN, 9.77000046, 9.52799988, 9.47500038, 9.45800018,
    9.44299984, 9.43599987, 9.42500019, 9.42000008, 9.40100002, 8.53299999,
    6.71400023, 5.80999994, 5.20699978, 5.01599979, 4.81699991, 4.79500008,
    4.66699982, 4.59499979, 4.6420002, 4.72300005, 4.70100021, 4.66200018,
    4.66499996, 4.70100021, 4.72900009, 4.73199987, 4.76399994, 4.75500011,
    4.72200012, 4.65199995, 4.55600023, 4.4920001, 4.45200014, 4.35599995,
    4.30800009, 4.2750001, 4.24900007, 4.22100019, 4.20200014, 4.1880002,
    4.18100023, 4.16499996, 4.16300011, 4.13999987, 4.12599993, 4.13600016,
    4.12799978, 4.11899996, 4.11399984, 4.1079998, 4.10200024, 4.09200001,
    4.079, 4.07499981, 4.05999994, 4.05499983, 4.05499983, 4.03100014,
    4.01900005, 4.02699995, 4.04099989, 4.03900003, 4.0250001, 3.9849999,
    3.9519999, 3.87899995, 3.86100006, 3.82399988, 3.80100012, 3.76399994,
    3.73699999, 3.704, 3.69799995, 3.6730001, 3.65199995, 3.64400005, 3.648,
    3.6400001, 3.62599993, 3.63000011, 3.63599992, 3.64100003, 3.63100004,
    3.63400006, 3.6400001, 3.64400005, 3.65199995, 3.65899992, 3.67400002,
    3.671, 3.65799999, 3.65100002, 3.6500001, 3.63700008, 3.625, 3.60899997,
    3.58299994, 3.58800006, 3.55299997, 3.54099989, 3.50200009, 3.48699999,
    3.45600009, 3.42799997, 3.41400003, 3.39499998, 3.38000011, 3.37299991,
    3.36100006, 3.35299993, 3.33699989, 3.31200004, 3.29200006, 3.27900004,
    3.26200008, 3.25699997, 3.24699998, np.NaN
])
LT = 58.886
LN = -40.20999999999998

mld = RF.MLD(Pres=P, Temp=T, Sal=S, Lat=LT, Lon=LN)
print('MLD: ', mld)
예제 #9
0
prof_count=0
for b in np.arange(len(floatlist)):
### For debugging and looking at specific floats ###
#for b in [10]:
    WMO=floatlist[b]
    dac=daclist[b]
    
    bad_index=[]
    #WMO=4900610
    #dac='coriolis'
    
    tic_float=time.time()
    print('\n%%% '+str(WMO)+' %%%\n')
    print(b, ' Floats completed; ', len(floatlist)-b,' Floats Left')
    #BGCfile='/Users/Ellen/Desktop/ArgoGDAC/dac/'+dac+'/'+str(WMO)+'/'+str(WMO)+'_Sprof.nc'
    f = RF.ArgoDataLoader(DAC=dac, WMO=WMO)
    
    float_vars=list(f.keys())
    float_vars=np.array(float_vars)
    
    oxy_check = np.where(float_vars=='DOXY')
    
    if oxy_check[0].size != 0:
        reft=f.REFERENCE_DATE_TIME.values
        dates=f.JULD.values
        
        date_reform=[[]]*dates.shape[0]
        for i in np.arange(len(date_reform)):
            if np.isnat(dates[i]) == False:
                date_reform[i]=datetime.fromisoformat(str(dates[i])[:-3])
            else:
예제 #10
0
@author: Ellen
"""

import xarray as xr
import matplotlib.pyplot as plt
import RandomFxns as RF
import numpy as np
from datetime import datetime
import time
import gsw
import RandomFxns2 as RF2

dac = 'meds'

dictfloat = RF.WMODacPair()

WMO = 4902384  #4900879
dac = dictfloat[WMO]
# 4900494

# f = RF.ArgoDataLoader(DAC=dac, WMO=WMO)

# plt.figure()
# f.plot.scatter(x='JULD',y='PRES_ADJUSTED',hue='DOXY_ADJUSTED')
# plt.xticks(rotation=45)
# plt.gca().invert_yaxis()
# plt.show()

##
# Random parameters you can change