In [ ]:
In [ ]:
In [172]:
import numpy as _np
import xarray as _xr
from atmPy.data_archives.arm import _tools
from atmPy.data_archives.arm import sites as armsites
from atmPy.aerosols.size_distribution import sizedistribution as _sd
from atmPy.general import timeseries as _ts
import atmPy
In [173]:
def open_path(path, window = None, average = None, verbose = True):
"""
Parameters
----------
path
start_time
end_time
average: tuple [None]
The purpose of this is to keep the memory usage low in case a lower reolution is required. E.g. (60, 's')
Returns
-------
"""
def read_aosaps(file, verbose = False):
ds = _xr.open_dataset(file, autoclose=True)
aods = pd.DataFrame()
wavelengths = pd.DataFrame()
for i in range(1,6):
aod = ds['aerosol_optical_depth_filter{}'.format(i)].to_pandas()
wl_measured = ds.attrs['filter{}_CWL_measured'.format(i)]
wl_nominal = ds.attrs['filter{}_CWL_nominal'.format(i)]
aods[wl_nominal] = aod
wls = {'wl_measured': float(wl_measured.split()[0]),
'wl_nominal': float(wl_nominal.split()[0])}
wavelengths = wavelengths.append(pd.DataFrame(wls, index = [i]), sort = True)
wavelengths.index.name = 'filter'
out = {}
out['aods'] = aods
out['wavelengths'] = wavelengths
if verbose:
pass
return out
# start_time, end_time = window
files = _tools.path2filelist(path=path, window = window, product='mfrsraod1mich', suffix='.cdf')
if verbose:
print('Opening {} files.'.format(len(files)))
print(_tools.path2info(files[0]))
data_dist = None
for file in files:
out = read_aosaps(file)
# return out
# break
ddt = _ts.TimeSeries(out['aods'])
if average:
ddt = ddt.average_time(average)
ddt = ddt.data
if isinstance(data_dist, type(None)):
data_dist = ddt
wavelengths = out['wavelengths']
else:
data_dist = data_dist.append(ddt, sort=True)
# make sure wavelength did not change
assert (_np.all(_np.equal(wavelengths, out['wavelengths'])))
# dist = _sd.SizeDist_TS(data_dist, binedges, 'dNdlogDp', ignore_data_gap_error=True)
dist = _ts.TimeSeries(data_dist)
dist.file_info = _tools.path2info(files[0])
dist.site = armsites.site_from_file_info(dist.file_info)
# dist.site_info = [site for site in atmPy.data_archives.arm.sites.sites_list if site['Site Code'] == dist.file_info['site'] and dist.file_info['facility'] == facility][0]
# dist.site = atmPy.general.measurement_site.Station(**site_info)
return dist
In [174]:
reload(atmPy.data_archives.arm._tools)
Out[174]:
In [177]:
fname = '/Volumes/HTelg_4TB_Backup/arm_data/SGP/mfrsraod1michC1.s1/'
ds = open_path(fname, window=('20161115', '20161116'))
# atmPy.data_archives.arm._tools.path2filelist(fname, verbose=True, suffix='.cdf')
In [176]:
reload(atmPy.data_archives.arm.sites)
Out[176]:
In [164]:
def site_from_file_info(file_info):
site_info = [site for site in atmPy.data_archives.arm.sites.sites_list if site['Site Code'].upper() == file_info['site'].upper() and site['facility'] == file_info['facility']][0]
site = atmPy.general.measurement_site.Station(**site_info)
return site
In [167]:
site_from_file_info(ds.file_info).lon
Out[167]:
In [111]:
from atmPy.aerosols.physics import column_optical_properties
In [129]:
reload(column_optical_properties)
reload(atmPy.data_archives.arm.sites)
Out[129]:
In [130]:
column_optical_properties.AOD_AOT()
Out[130]:
In [132]:
sitec = 'SGP'
facility = 'C1'
[site for site in atmPy.data_archives.arm.sites.sites_list if site['Site Code'] == sitec and site['facility'] == facility]
Out[132]:
In [128]:
site = atmPy.data_archives.arm.sites.sites_list[1]
site['facility'] == facility
Out[128]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [79]:
fname = '/Volumes/HTelg_4TB_Backup/arm_data/SGP/mfrsraod1michC1.s1/sgpmfrsraod1michC1.s1.20161115.000000.cdf'
ds = xr.open_dataset(fname)
In [88]:
df = pd.DataFrame()
df['bls'] = ds['aerosol_optical_depth_filter1'].to_pandas()
df
Out[88]:
In [12]:
ds.filter1_CWL_nominal
Out[12]:
In [17]:
ds.aerosol_optical_depth_filter1.to_pandas()
Out[17]:
In [55]:
aods = pd.DataFrame()
wavelengths = pd.DataFrame()
for i in range(1,6):
aod = ds.variables['aerosol_optical_depth_filter{}'.format(i)]
wl_measured = ds.attrs['filter{}_CWL_measured'.format(i)]
wl_nominal = ds.attrs['filter{}_CWL_nominal'.format(i)]
aods[wl_nominal] = aod
wls = {'wl_measured': float(wl_measured.split()[0]),
'wl_nominal': float(wl_nominal.split()[0])}
wavelengths = wavelengths.append(pd.DataFrame(wls, index = [i]), sort = True)
wavelengths.index.name = 'filter'
In [56]:
wavelengths
Out[56]:
In [52]:
float(wl_measured.split()[0])
Out[52]:
In [ ]:
In [43]:
wls = {'wl_measured': wl_measured,
'wl_nominal': wl_nominal}
wavelengths.append(pd.DataFrame(wls, index = [i]), sort = True)
Out[43]:
In [29]:
aods.plot()
Out[29]:
In [ ]: